mybatis笔记

作者: 修行者12138 | 来源:发表于2020-05-01 15:16 被阅读0次

使用${}接收变量时,不会对传过来的变量做处理(#{}会对参数加上双引号),因此,如果需要实现in的效果,又懒得写foreach,可以用英文逗号把List或数组拼接成逗号隔开的字符串,用${}接收,最后sql的效果就是 in (1, 2, 3)。

使用tk.mybatis时,extends tk.mybatis.mapper.common.Mapper<T>可以继承大部分常用方法,如果再extends tk.mybatis.mapper.common.MySqlMapper<T>,可以继承批量插入方法int insertList(List<T> var1)。

使用insertList方法时,主键字段名必须是id,且必须是自增,否则会报错Field 'id' doesn't have a default value

image.png

mysql对单条sql的长度有限制,而mybatis的批量插入(java的insertList或者xml里的foreach),会把所有数据拼接成一条sql。
因此使用mybatis批量插入时,要控制List的数量,拼接后的sql不要超过mysql的长度限制。

可以用select @@max_allowed_packet查询单条sql的长度限制。
mysql 5.7版本该设置的默认值是4M,8.0版本默认值是64M


image.png



插入成功后,把生成的id注入到bean的id属性

<insert id="testInsert" useGeneratedKeys="true" keyProperty="id">
    insert into adm_black_list(name) values (#{name})
</insert>

批量插入前,一定要对集合判空
使用where column in xxx前,一定要对入参判空

使用updateByPrimaryKeySelective或者updateByExampleSelective,就没法把某个字段修改为null或空字符串,经测试,不可以修改为"",但可以修改为" "

使用order by
example.setOrderByClause("indicator_id desc");

测试PageHelper分页的影响范围
以下两个接口,先调用page1,再调用page2,分页不生效,说明PageHelper分页的影响范围在一次请求内

@GetMapping("page1")
public void page1() {
    PageHelper.startPage(1, 10);
}

@GetMapping("page2")
public List<AispRiskDataDO> page2() {
    return riskDataMapper.select(new AispRiskDataDO());
}

另外,经测试,PageHelper分页不会影响update



参数为Boolean类型时,不能这样写,否则入参为null时,条件判定为true

<if test="param.isLimited != null and param.isLimited = true">
    limit 1000
</if>

正确写法如下,入参为false或null时不执行逻辑

<if test="param.isLimited">
    limit 1000
</if>

相关文章

  • Spring系列 | 小荷才露尖尖角

    MyBatis学习笔记 MyBatis操练 MyBatis源码 SpringMVC学习笔记 SpringMVC...

  • MyBatis缓存

    MyBatis Mybatis笔记连载上篇连接Mybatis简单操作学习 Mybatis笔记连载下篇连接Mybat...

  • Mybatis动态SQL

    MyBatis Mybatis笔记连载上篇连接MyBatis缓存Mybatis笔记连载下篇连接 动态SQL 动态S...

  • Mybatis 学习笔记

    Mybatis 学习笔记 配置 MyBatis 环境 导入MyBaits依赖jar包 要使用 MyBatis, 需...

  • Mybatis学习笔记汇总(包括源码和jar包)

    博客整理 Mybatis学习笔记(一)——对原生jdbc中问题的总结 Mybatis学习笔记(二)——Mybati...

  • Mybatis笔记 一

    Mybatis笔记 一 为什么学Mybatis 目前最主流的持久层框架为hibernate与mybatis,而且国...

  • Mybatis--day01

    非本人总结的笔记,抄点笔记复习复习。感谢传智博客及黑马程序猿成长 什么是Mybatis ​ MyBatis 本...

  • 一,MyBatis应用分析与实践

    之前学习MyBatis整理了一些笔记,笔记分为四个部分:1.MyBatis应用分析与实践[https://www....

  • 初识MyBatis

    MyBatis学习笔记(一) 1、什么是MyBatis2、安装3、第一个mybatis实例 前言 1、ORM:Ob...

  • Spring和MyBatis整合笔记

    对于 Spring 框架和 MyBatis 框架整合,摸爬滚打总结了这篇笔记,MyBatis 用 XML 文件替代...

网友评论

    本文标题:mybatis笔记

    本文链接:https://www.haomeiwen.com/subject/lgykghtx.html