首页 > 其他分享 >mybatis工作笔记

mybatis工作笔记

时间:2022-09-28 10:01:52浏览次数:78  
标签:Mybatis 插入 笔记 工作 使用 mybatis WHERE 主键


Mybatis​ 是 Java 中一个非常好用的数据库框架,这儿记录一下在使用过程中遇到的坑。

官方中文文档地址:http://www.mybatis.org/mybatis-3/zh/getting-started.html

1、在Mybatis mapping.xml映射配置文件中使用大于>号小于号<由于​Mybatis​的映射文件遵循xml文件的格式,所以不能使用像大于号或者小于号这样的xml文件特殊字符,需要使用转义字符代替。

可以使用:

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

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

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

<!-- 以下为错误写法,会抛NumberFormatException异常 -->
<if test="username == 'U'">

<!-- 正确写法如下两种 -->
<if test="username == 'U'.toString()">
<if test='username == "U"'>

3、Mybatis实现WHERE IN查询

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

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

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

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

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

在进行输入库插入的时候,如果我们需要使用已经插入的记录的主键,则需要返回刚才插入的数据的主键id。

通过设置 insert 标签的 useGeneratedKeys 属性为 true 可以返回插入的记录的主键的id。

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

5、mybatis中  with as 用法,以及 <include/> property用法

mybatis工作笔记_迭代

mybatis工作笔记_嵌套_02

mybatis工作笔记_嵌套_03

根据上图第一图所示,首先用了一个 refid = "node2ne" 的 with as 语句块,其实 with as 就是一个嵌套语句,在 where 条件的 whereNeId2 语句块中进行了引用;

还有  <property name = "alias" value = "F">,顾名思义,指明了嵌套语句中的值;

标签:Mybatis,插入,笔记,工作,使用,mybatis,WHERE,主键
From: https://blog.51cto.com/u_15765446/5718400

相关文章

  • mybatisPlus-extends BaseMapper
    *如果自定义xxMapper继承了mybatis-plus的BaseMapper时,xxMapper中不能有insert()方法,因为BaseMapper中就有这个方法。*1.如果对应的xxMapper.xml中有<insertid="insert"......
  • SpringBoot整合MyBatis
    配置准备引入依赖在pom.xml文件中引入数据库和mybatis相关依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-j......
  • 线段树学习笔记(入门)
    目录前言线段树基础2.1定义2.2区间操作和懒标记2.3一些例题1.前言应老师要求,来写一篇关于线段树的学习笔记2.线段树基础2.1定义线段树是一种二叉搜索树,与......
  • 前端重点复习笔记
    JavaScriptJS特点不主动开启新的线程的情况下单线程如何开启新线程varworker=newWorker('js文件路径')js是弱类型语言所有的声明都是通过var在赋值的时......
  • Jenkins 20220927笔记本4
                          ......
  • React核心工作原理
    ##1.1、虚拟DOM常见问题:reactvirtualdom是什么?说一下diff算法?拿到一个问题,一般回答都是是什么?为什么?怎么办?那就按照这个思路来吧!what用JavaScript对象表示DOM......
  • Makefile学习笔记
    基本格式target:dependence command#冒号之前是目标名,冒号之后是依赖#每个command独占一行,每行之前必须有一个tab.phony:clean clean-command#以.phony修饰,使......
  • D3 笔记
    D3D3orD3.js代表"DataDrivenDocuments"选中、添加元素select()方法从文档中选择一个元素,它接收目标元素的名称作为参数并返回第一个匹配该名称HTML节点。举例:......
  • FHQ-treap 学习笔记
    介绍平衡树平衡树,又称treap,是树(tree)以及堆(heap)的合称,具体表现为形式上它是一棵二叉树,而性质上它又满足堆的性质。与普通的BST(BinarySearchTree)相比,它由于具有......
  • axios学习笔记
     一.  安装json-server 01安装npminstall-gjson-serverhttps://github.com/typicode/json-server 02,新建一个db.json文件,把上面链接文档的数据放上去......