MyBatis 的4个巧妙用法

傷城~ 2022-11-03 04:24 199阅读 0赞

1、在Mybatis mapping.xml映射配置文件中使用大于>号小于号<

由于Mybatis的映射文件遵循xml文件的格式,所以不能使用像大于号或者小于号这样的xml文件特殊字符,需要使用转义字符代替。































< < 小于号
> > 大于号
& &
单引号
双引号

可以使用:

  1. SELECT * FROM test
  2. WHERE 1 = 1 AND start_date <= CURRENT_DATE AND end_date >= CURRENT_DATE
  3. <![CDATA[ when min(starttime)<='12:00' and max(endtime)<='12:00' ]]>

2、Mybatis中使用OGNL表达式test比较字符串

在Mybatis映射配置文件中,使用OGNL表达式test的时候,比较字符串时,需要调用 toString()方法保证 == 两边的值都是 String 类型。

  1. <!-- 以下为错误写法,会抛NumberFormatException异常 -->
  2. <!-- java项目源码 www.fhadmin.org -->
  3. <if test="username == 'U'">
  4. <!-- 正确写法如下两种 -->
  5. <if test="username == 'U'.toString()">
  6. <if test='username == "U"'>

3、Mybatis实现WHERE IN查询

WHERE IN查询中,IN的参数是一个列表,需要传送一个列表参数,使用 foreach 实现。

  1. <select id="selectPostIn" resultType="domain.blog.Post">
  2. SELECT * FROM POST P
  3. WHERE ID in
  4. <foreach item="item" index="index" collection="list" open="(" separator="," close=")">
  5. #{item}
  6. </foreach>
  7. </select>

当使用可迭代对象或者数组时,index是当前迭代的次数,item的值是本次迭代获取的元素。当使用字典(或者Map.Entry对象的集合)时,index是键,item是值。

你可以将任何可迭代对象(如列表、集合等)和任何的字典或者数组对象传递给foreach作为集合参数。

4、Mybatis插入数据的时候返回插入记录的主键id

在进行输入库插入的时候,如果我们需要使用已经插入的记录的主键,则需要返回刚才插入的数据的主键id。通过设置 insert 标签的 useGeneratedKeys 属性为 true 可以返回插入的记录的主键的id。

  1. <insert id="User" useGeneratedKeys="true" keyProperty="id"> </insert>

发表评论

表情:
评论列表 (有 0 条评论,199人围观)

还没有评论,来说两句吧...

相关阅读

    相关 MyBatis 4巧妙

    1、在Mybatis mapping.xml映射配置文件中使用大于>号小于号< 由于Mybatis的映射文件遵循xml文件的格式,所以不能使用像大于号或者小于号这样的xml文

    相关 nginx巧妙

    需求我用tomcat安装了一个应用,结果没有办法去掉二级目录了,而且我的80端口是给nginx用的,所以也不能让tomcat监听80端口了,只能用nginx去代理tomc...