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学习总结(二)——MyBatis核心配置文件与输入输出映射
-
MyBatis 映射文件配置详解
-
Mybatis XML映射文件
-
MyBatis总结(3)---映射文件的元素配置
-
MyBatis Xml映射文件之字符串替换方式
-
springboot中 配置文件 application.properties 中 设置连接mysql数据 数据源信息以及设置时区、编码 扫描mybatis映射、配置文件路径、开启驼峰命名
-
eclipse 的mybatis中mapper.xml文件标签没有提示的解决方法
-
Mybatis常用的注解开发CRUD&&复杂关系映射(一对一,一对多)&&mybatis 基于注解的二级缓存
-
01Mybatis映射文件的SQL深入
-
mybatis映射文件mapper.xml的具体写法