动态SQL Mapper文件中应该怎么写

  • <if>
  • <choose>
  • <where>
  • <set>
  • <foreach>
  • <bind>

例子1:<if>、<where>、<sql>、<include>

  • 有一个用户表t_user和角色表t_role,通过传入keywords和userListRoleId来查询所有的用户表,当然可以添加keywords和userListRoleId的额外条件。
  • 比如:我有以下的数据库:
    t_user:
    在这里插入图片描述
    t_role:
    在这里插入图片描述
    sql语句为:
SELECT u.*,r.roleName FROM t_user AS u,t_role AS r WHERE u.roleId=r.roleId AND u.userId = 1

结果为:
在这里插入图片描述
mybatis的mapper文件中可以这样写:

	<!--查询所有用户集合where语句 -->
	<sql id="selectUserListWhere">
	  <where>
	  	u.roleId=r.roleId
	    <if test="keywords!=null and keywords!=''" >
	       and (u.username like CONCAT('%',#{keywords},'%') or u.loginName like CONCAT('%',#{keywords},'%'))
	    </if>
	    <if test="userListRoleId!=null and userListRoleId!=''" >
	       and (u.roleId=#{userListRoleId})
	    </if>
	  </where>
	</sql>

	<!--查询所有用户集合列表 -->
	<select id="selectUserList" parameterType="String" resultType="User">
        select u.*,r.roleName from t_user as u,t_role as r 
		<include refid="selectUserListWhere" />
		order by registerTime desc
	</select>

在这里插入图片描述

例子二:

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Spring Boot,使用Mybatis作为ORM框架,我们可以在mapper文件SQL语句。如果需要批量插入数据,可以使用Mybatis提供的foreach标签来实现。具体语法如下: ``` <insert id="batchInsert" parameterType="java.util.List"> INSERT INTO 表名 (字段1, 字段2, ...) VALUES <foreach collection="list" item="item" index="index" separator=","> (#{item.field1}, #{item.field2}, ...) </foreach> </insert> ``` 其,`batchInsert`为该SQL语句的唯一标识符,`parameterType`指定了传入的参数类型,这里为`java.util.List`。 `<foreach>`标签的`collection`属性指定了要遍历的集合,`item`属性指定了集合每个元素的别名,在SQL可以通过`${item.field1}`的方式引用每个元素的属性值。`index`属性可以指定当前元素在集合的索引,可选。 `<foreach>`标签的`separator`属性指定了每个元素之间的分隔符,这里为逗号。注意,最后一个元素后面不能有分隔符。 例如,插入一个students表的多条数据可以使用如下语句: ``` <insert id="batchInsertStudents" parameterType="java.util.List"> INSERT INTO students (name, age, gender) VALUES <foreach collection="list" item="item" index="index" separator=","> (#{item.name}, #{item.age}, #{item.gender}) </foreach> </insert> ``` 注意,这里的`#{item.name}`等对应的是Java对象的属性,不是表的字段名。同时,集合的元素类型必须与mapper文件指定的`parameterType`一致。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值