欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Mybatis映射文件常用标签

程序员文章站 2022-05-28 15:57:41
...

SQL语句标签

1.select

<!--id表示sql语句的唯一标识,必须与接口的方法名一致才能找到-->
<!--parameterType传入sql语句的参数的全路径名或者别名-->
<!--resultMap定义出参,值为<resultMap>的id值-->
<select id="findById" parameterType="INT" resultMap="userMap">
        select * from user where id = #{uid}
</select>

2.insert

<insert id="saveUser" parameterType="user">
        <!--将selectKey放在insert之后,通过LAST_INSERT_ID() 获得刚插入的自动增长的id的值 -->
    	<!--keyProperty:对应实体类的属性-->
    	<!--keyColumn:对应数据库的字段-->
    	<!--resultType定义出参,值为普通java或自定义的pojo-->
        <selectKey keyProperty="userId" keyColumn="id" resultType="int" order="AFTER">
            select last_insert_id();
        </selectKey>
        insert into user(username,sex)values(#{userName},#{userSex});
</insert>

3.delete

 <delete id="deleteUser" parameterType="java.lang.Integer">
        delete from user where id = #{uid}
 </delete>

4.update

 <update id="updateUser" parameterType="USER">
        update user set username=#{userName},sex=#{userAex} where id=#{userId}
 </update>

SQL语句的复用

使用sql标签定义sql语句,通过include标签引用

<sql id="show">
    select username,sex from user
</sql>

<select id="findTwo" resultMap="userMap">
    <!--refid指向sql的id值-->
	<include refid="show"></include>
</select>

映射管理器resultMap

用于解决实体类中属性和表字段名不相同的问题

<!--id为映射管理器的唯一标识,通过该值引用-->
<!--type标识需要映射的实体类,别名不区分大小写-->
<resultMap id="userMap" type="user">
        <!-- 主键字段的对应 property对应实体类属性 column对应表字段 -->
        <id property="userId" column="id"></id>
        <!--非主键字段的对应-->
        <result property="userName" column="username"></result>
        <result property="userSex" column="sex"></result>
 </resultMap>

动态SQL语句

1.if

<select id="findUser" resultMap="userMap" parameterType="user">
        select * from user where 1=1
   <!-- 配置属性test=" 条件字符串 "  满足条件则执行  不满足则跳过-->
        <if test="userName != null">
          and username = #{userName}
        </if>
        <if test="userSex != null">
            and sex = #{userSex}
        </if>
</select>

2.where

 <select id="findUser" resultMap="userMap" parameterType="user">
        select * from user
     <!--where标签替代where1=1-->
        <where>
            <if test="userName != null">
                and username = #{userName}
            </if>
            <if test="userSex != null">
                and sex = #{userSex}
            </if>
        </where>
 </select>

3.set

<update id="updateUser" parameter="user">
    update user
    <!--set标签用于更新语句,替代sql语句中的set关键字-->
    <!--set联合if判断,有效防止空数据或不合法数据更新都数据库中-->
    <set>
    <if test="userName!=null and userName!=''">username=#{username},</if>
    <if test="userSex!=null and userSex!=''">userSex=#{userSex}</if>
    </set>
</update>   

4.foreach

 <select id="findUser" resultMap="userMap" parameterType="userPlus">
       select * feom user
        <where>
            <if test="idList!= null and idList.size()>0">
                <!--collection指定的是需要遍历的集合或者数组-->
                <!--open,close表示该语句以什么开始结束--> 
                <!--Item代表循环的每一项-->
                <!--Separator分隔符   -- 固定写法-->
                <foreach collection="idList" open="and id in (" close=")" item="uid" separator=",">
                    #{uid}
                </foreach>
            </if>
        </where>
 </select>
相关标签: Mybatis