mybatis 基础(二) xml文件中的其他知识点

mybatis xml文件中一些标签的使用

  1. 此标签主要用作 配置 "别名"
    如果实体类与数据库中字段名在不区分大小写的情况下相同的话,
    那就不需要配置resultMap,因为mysql数据库不区分大小写,所以可以直接映射上

    但是如果实体类与数据库中字段名不相同的话,我们可以由三个解决方案
    1. 直接修改数据库字段名,使之与实体类对应上
    2. 在程序中配置文件中对sql语句改造,起别名,使之与实体类映射上 (直接操作sql语句效率更高)
      如: select gender as usergender,age as userage from user;
    3. 写配置文件 resultMap,使之映射上,但是需要修改resultType="com.mybatis.entry.User" 为 resultMap="userMap" (方便)
 <resultMap id="userMap" type="com.mybatis.entry.User">
        <!--首先配置主键对应-->
        <id column="uid" property="userUid"></id>
        <!--其他属性配置-->
        <result column="username" property="userName"></result>
        <result column="gender" property="userGender"></result>
        <result column="age" property="userAge"></result>
</resultMap>

2.typeAliases 标签
主要作用是起别名, 便于开发中简化一些文字
其中typeAlias的作用 :type指定类,alias指定别名

如这里修改了User.class的名字为user,  则在User.xml中的com.mybatis.entry.User全部可以改成user  或者 他的任意大小写形式,这里不区分大小写的
package的作用: 指定包,该包下所有的类都建立的别名,别名默认为该类的小写形式,同样不区分大小写
    <typeAliases>
        <!--        <typeAlias type="com.mybatis.entry.User" alias="user"></typeAlias>-->
        <package name="com.mybatis.entry"></package>
    </typeAliases>

3.

<mappers>
                <mapper resource="com/mybatis/dao/IUserDao.xml"></mapper>
        <!--package 指定dao接口所在的包,当指定后不需要再写mapper以及resource或者class了-->
<!--        <package name="com.mybatis.dao"></package>-->
    </mappers>

4.假如包含多个条件时,可以使用标签的方式进行条件查询, 当包含出基本实体类的其他条件时,可以新建一个实体类,将所需的条件全部放入其中,用新的实体类去进行条件的获取

<select id="findByCondition" parameterType="user"  resultType="user">
        select * from user
        <!-- 这里的userName 对应的也是实体类中的属性-->
        <where>
            <if test="userName!=null">
                 username=#{userName}
            </if>
            <if test="gender!=null">
                and gender=#{gender}
            </if>
        </where>
    </select>

     <!--多个id,新建实体类,传入id集合,并用foreach标签遍历ids-->
    <select id="findByIds" parameterType="vo"  resultType="user">
        select * from user
        <!-- 这里的userName 对应的也是实体类中的属性-->
        <where>
            <if test="ids !=null and ids.size()>0">
                <foreach collection="ids" open=" uid in (" close=")"  item="uid" separator=",">
                    #{uid}
                </foreach>
             </if>
        </where>
    </select>

5.当某sql语句重复出现,可以使用 标签提取sql. 然后再语句中使用 包含进来

 <!--提取sql语句,避免重复-->
    <sql id="defaultUser" >
        select * from user
    </sql>
    <!--获得所有用户列表-->
    <!--<select id="getUsers" resultMap="userMap">-->
    <select id="getUsers" resultType="com.mybatis.entry.User">
        <include refid="defaultUser"></include>
        // select * from user
    </select>

猜你喜欢

转载自www.cnblogs.com/chq1024/p/11564726.html