![](https://img-blog.csdnimg.cn/787f7ef316d745428571845851c879d9.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Mybatis
Mybatis
BasicLab基础架构实验室
本人深耕基础架构领域,曾在国内500强大厂研发企业级百亿量级吞吐中间件,擅长Java语言、Go语言、Python语言、C语言、NodeJS、Web、Linux、深度学习、大数据、云原生等
展开
-
Mybatis-plus 集成 PostgreSQL 数据库自增序列问题记录
这个问题,耗了一下午,一定要坚持不放弃全局审视非常重要。原创 2024-07-12 19:13:26 · 430 阅读 · 0 评论 -
PostgreSQL 新增数据返回自增ID
最近在项目中使用Postgresql插入数据需要返回自增ID,特此记录便于日后查阅。<insert id="copyMainGroup" parameterType="com.openailab.oascloud.common.model.tcm.TrainingGroupBO"> <selectKey resultType="java.lang.Integer" ...原创 2020-03-16 16:24:00 · 5701 阅读 · 8 评论 -
Mybatis 时间范围查询
最近在做项目过程中,需要通过时间范围条件查询结果列表,代码如下:<if test="startTime!=null and startTime!=''"> <![CDATA[ and DATE_FORMAT(dl.exc_start_time, '%Y-%m-%d %h:%i:%s')>= DATE_FORMAT(#{startTime}, '%Y-%m-%d...原创 2020-03-10 11:06:35 · 2380 阅读 · 0 评论 -
PostgreSQL(MySQL)插入操作传入值为空则设置默认值
1、mysql写法IFNULL(p1,p2),如果p1有值就是p1,如果p1是空,则值为p2<insert id="insertForeach" parameterType="java.util.List" > insert into user_message ( skip_id ) values <foreach col...原创 2019-12-28 06:13:35 · 5326 阅读 · 3 评论 -
PostgreSQL(MySQL)联合唯一索引存在空值时唯一约束失效
问题:当Mysql中建立的联合索引, 只要索引中的某一列的值为空时(NULL),即便其他的字段完全相同,也不会引起唯一索引冲突。原因:Mysql官方文档中有这样的解释A UNIQUE index creates a constraint such that all values in the index must be distinct. An error occurs if y...原创 2019-12-27 15:52:54 · 2665 阅读 · 2 评论 -
PostgreSQL(MySQL)插入操作遇到唯一值重复时更新
1、mysql写法<insert id="insertOrUpdateNew"> insert into test (a,b,c) values (#{a},#{b},#{c}) on duplicate key update c = values(c)</insert> <inser...原创 2019-12-27 16:08:52 · 3063 阅读 · 0 评论 -
MyBatis #{}和${}区别详解
首先看一下下面两个sql语句的区别:<select id="selectByNameAndPassword" parameterType="java.util.Map" resultMap="BaseResultMap"> select id, username, password, role from user where username = #{us...原创 2019-11-07 20:16:51 · 543 阅读 · 2 评论 -
Mybatis 默认插入当前时间
<!--单表动态更新语句 --><update id="update" parameterType="com.zzg.entity.ColumnValidate"> update ucas_bus_column_validate <set> <if test="updateBy != null and updateBy ...原创 2019-11-07 14:30:13 · 7499 阅读 · 1 评论 -
Mybatis 传参的几种方式
1.单个参数Mapper.java==>Mapper.xml ==>2.按照顺序传参Mapper.java==>Mapper.xml ==>注意:没有使用parameterType属性,早期版本用#{0},#{1}3.使用@Param注解Mapper.java==>Mapper.xml ==>4.Map传参...原创 2019-11-07 12:07:22 · 809 阅读 · 0 评论 -
Mybatis 中update动态SQL语句
Mybatis中的CRUD操作(增删改查)中,简单的SQL操作比较直观,如查找操作:<select id="findBySrcId" resultMap="entityRelationResultMap"> SELECT * FROM ENTITY_RELATION WHERE SRC_ID=#{srcId}</select>其中id对应同名java文件中的...原创 2019-11-07 10:21:15 · 3233 阅读 · 0 评论 -
Mybatis 实体嵌套查询
本例子只是一个实体类嵌套另外一个或者多个实体类。在实体类嵌套一个实体列表的我还没研究出来。首先上实体类:public class AppPost { private String postId; private String postTitle; private int upTime; private int postType; private i...原创 2019-11-05 15:53:04 · 1993 阅读 · 6 评论 -
Mybatis 模糊查询like拼接问题
<select id="getUsersByFuzzyQuery" parameterType="User" resultType="User"> select <include refid="columns"/> from users <where> <if test="phone != null"> ...原创 2019-11-05 15:46:10 · 2044 阅读 · 2 评论 -
Mybatis 不同类型参数判断是否为空
Mybatis不同类型参数判断是否为空的方式不一样,下面我列出常用的几种类型判空方式。1、String类型<if test="type != null and type != ''"> AND type = #{type} </if> 2、Integer类型<if test="type != null"> AND...原创 2019-10-29 09:27:48 · 12489 阅读 · 4 评论 -
MyBatis 几种不同类型传参的总结
在Web开发过程中,我们根据业务需求将不同类型参数从后台传入到MyBatis的各个不同的mapper命名空间中,包括有string类型,map类型,list集合类型,或者是直接传入一个对象等。1.String类型1.1对于string类型,我们一般传 在sql中写明parameterType="string" ,例:则在获取参数时,如果是要进行非null的判断,则不可在...转载 2019-10-10 10:07:07 · 2539 阅读 · 0 评论 -
SpringBoot通过mybatis-generator插件自动生成代码
项目中有需要通过mybatis-generator插件生成代码,所以我们需要简单配置一下。1、maven依赖首先需要在SpringBoot启动类所在pom.xml中引入mybatis-generator插件的maven依赖,依赖如下:<dependency> <groupId>org.mybatis.generator</groupId>...原创 2019-05-29 16:25:44 · 482 阅读 · 0 评论 -
Mybatis 相同查询参数但返回结果不同(踩坑记录)
最近项目中遇到一个非常奇怪的问题,前端分页列表,传给后端相同的查询参数,但是返回结果不同,可能前几次能够正确的返回结果数据,但是下一次返回数据可能就为空。后端是通过Mybatis来进行SQL执行的,通过配置Mybatis打印执行SQL发现,能够返回结果的是我想要的查询SQL,结果如下: SELECT * FROM bss_follow_up_user_info m LIMIT 0,20...原创 2019-03-19 11:42:10 · 3281 阅读 · 0 评论 -
Mybatis 单个插入和批量插入返回主键ID
插入返回主键:<insert paramterType="com.andy.User" useGeneratedKeys="true" keyProperty="id"> insert into user(name) values(#{name})</insert >批量插入返回主键:/** * 批量插入 * @param optionList...原创 2018-09-19 09:19:52 · 1246 阅读 · 0 评论 -
Mybatis异常invalid comparison: java.util.Date and java.lang.String
开发中改动mapper文件后需要重新编译发布, 由于工程比较大非常耗时, 所以为方便快速测试干脆写了一个小java工程. 工程中用到的dao, mapper和实体类都是从工程中拷出来的, 数据库也是同一个. 但是遇到一个比较奇怪的问题实体类中有一个属性private Date createTime;对应该属性数据库中定义的是create_time datetimemap...原创 2018-09-11 09:46:56 · 883 阅读 · 0 评论 -
MyBatis 同时传递一个整数和一个Set参数
代码如下:List<Item> getItemByNames(@Param("names") Set<String> names, @Param("type") Integer type);注意使用了Param注解在mapper文件中<select id="getItemByNames" resultMap="BaseResultMap">...原创 2018-09-19 19:38:47 · 1074 阅读 · 0 评论 -
Java语言Mybatis中in语法的使用
今天写map时,(伪代码):update xxx t set t.a='1' where id in (#{ids});当ids传入为string 1,2,3 时,得出效果只是更新了id=1的数据,原来#{xxx}是一个字符串,mybatis只会当他是一个值,如果你想达到字面上的效果:update xxx t set t.a='1' where id in<forea...原创 2018-09-20 20:54:21 · 618 阅读 · 0 评论 -
Mybatis xml 判断集合的size
在mybtis的映射文件中判断集合大小list.size() 例子如下:<if test="groupIds != null and groupIds.size() > 0"> and (group_id in<foreach collection="groupIds" index="index" item="item" open="(" separato...转载 2018-11-02 14:51:59 · 6401 阅读 · 2 评论 -
Mybatis 通过DUPLICATE实现在INSERT中批量高效更新数据
这篇文章主要介绍在Mybatis的INSERT语句中批量高效更新数据的方法,主要运用唯一索引配合DUPLICATE实现这个功能。应用场景是在执行INSERT语句时候,唯一索引所在字段的数据在数据表中已经存在,此时需要批量更新表中除唯一字段以外的所有字段为新数据。本来没打算写这篇文章的,主要是因为网上DUPLICATE批量更新的文章几乎全部雷同,而且都是无效的,所以打算写一篇DUPLICATE批...原创 2018-12-04 20:37:15 · 4784 阅读 · 2 评论 -
Mybatis 中ON DUPLICATE KEY UPDATE与useGeneratedKeys混用陷阱
最近项目中遇到想要在唯一索引字段相同的情况下更新表中数据,并且返回主键ID的场景,此时我的写法是:<insert id="batchInsert" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id"> INSERT INTO op_clue_model_rule (rule_nam...原创 2018-12-17 15:45:38 · 3279 阅读 · 3 评论 -
SpringBoot配置Mybatis打印执行的SQL日志
1、properties logging.level.com.cy.ops.dal = DEBUGcom.cy.ops.dal为要输出的包名。注意:这个dal不是放.xml文件的,而是放DAO接口文件的。2、ymllogging: level: com.cy.ops.dal: DEBUG...原创 2019-01-09 10:31:23 · 15247 阅读 · 4 评论 -
SpringBoot 配置Mybatis的PageHelper分页插件
最近项目中有用到Mybatis的PageHelper分页插件,记录一下插件集成方法和一些坑。1、引入PageHelper依赖<dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> &...原创 2019-01-09 11:50:56 · 1151 阅读 · 0 评论 -
推荐一个 Java 实体映射工具 MapStruct
声明:1、DO(业务实体对象),DTO(数据传输对象)。2、我的代码中用到了 Lombok ,不了解的可以自行了解一下,了解的忽略这条就好。在一个成熟的工程中,尤其是现在的分布式系统中,应用与应用之间,还有单独的应用细分模块之后,DO 一般不会让外部依赖,这时候需要在提供对外接口的模块里放 DTO 用于对象传输,也即是 DO 对象对内,DTO对象对外,DTO 可以根据业务需要变更,并不需...转载 2019-03-09 20:22:58 · 326 阅读 · 0 评论 -
Mybatis 实体转换工具之Mapstruct的简易运用
最近项目中有使用Mapstruct实体类转换工具,非常好用,不过也是浅拷贝之类的工具,在这篇文章分享给大家。1、引入maven依赖<dependency> <groupId>org.mapstruct</groupId> <artifactId>mapstruct-jdk8</artifactId> &l...原创 2019-03-09 21:29:40 · 6406 阅读 · 8 评论 -
Mybatis 批量更新数据两种方法效率对比
点滴记载,点滴进步,愿自己更上一层楼。上节探讨了批量新增数据,这节探讨批量更新数据两种写法的效率问题。实现方式有两种,一种用for循环通过循环传过来的参数集合,循环出N条sql,另一种 用mysql的case when 条件判断变相的进行批量更新 下面进行实现。注意第一种方法要想成功,需要在db链接url后面带一个参数 &allowMultiQueries...原创 2018-07-12 10:21:10 · 2145 阅读 · 0 评论