
mybatis
轻尘×
一念起,千山万水;一念灭,沧海桑田;生活,或许本该就有诸多遗憾;那些情,已散落天涯,那些未说完的话、未叙完的故事,终将被流年吹散
展开
-
mybatisplus动态sql整型数组使用in踩坑
项目中有个需求,根据多个整型id查询对应的信息理论上最终sql应该是如下所示:但前端传来的参数想着就把userIdArr转成1,2,3,4,5,6就行了然后将字符串形式的userArrIds作为参数传给mappe,于是写成动态sql如下按照预想的,它应该生成如下sql语句自测一下,发现无论userIdArr传多少个,都只能查出第一个,郁闷了半天才发现被自己“蠢哭了”,因为将Integer[] userIdArr转换成了String,最终的sql其实是这样的整个参数被当成了原创 2022-08-26 10:09:04 · 1513 阅读 · 0 评论 -
@Options(useGeneratedKeys = true, keyProperty = “id“, keyColumn = “id“,mybatis主键自增长,返回主键值配置问题
在很多场景下,会将某个实体的主键设为自增长,但在某些场景下,需要在实体插入数据的同时就获取该实体的主键值;例如在用户注册时,我们需要将用户信息插入用户表,同时,我们需要生成一条与用户关联的另一张表的记录,在同一段逻辑代码中,就需要用户信息插入的同时,返回自增长的主键用以关联其他信息,mybatis配置方式如下。实体类@Getter@Setter@ToString@TableName("acc_sys_t_user")public class SysUser implements S..原创 2022-03-07 09:51:24 · 2637 阅读 · 0 评论 -
mybatis plus中SelectProvider自定义sql避免where 1=1
因为查询条件的不确定,用到了where 1=1这样的权宜之计,使用WHERE 1=1 之后,就不能使用索引了且会遍历全表,显然在数据量比较大的情况下这是不能接受的解决方法之一:在返回自定义sql之前检查sql,将不需要的where 1=1替换掉 public static String replaceForeverTrueSql(String originalSql) { ...原创 2019-10-25 11:27:02 · 3015 阅读 · 0 评论 -
MyBatis-Plus 批量插入
spring boot+mybatis plus环境,单条插入用的是BaseMapper自带的insert方法public ApiResult addAnc(Anc anc) { ApiResult result = new ApiResult(); Integer insert = ancMapper.insert(anc); if...原创 2019-08-09 18:51:35 · 146980 阅读 · 30 评论 -
mybatis主键自增长,注解返回主键
实体类 @TableId(value = "projectID",type = IdType.AUTO) @TableField("projectID") private Long projectID;插入的时候就不能直接用BaseMapper接口的Integer insert(T var1);了,需要自己实现@Options(useGeneratedKeys = true...原创 2018-11-28 20:31:44 · 6233 阅读 · 0 评论 -
mybatis一对多查询注解方式
三层数据结构如下{ "code": 1, "data": { "projectID": 1, "projectStageList": [ { "stageID": 1, "projectID": 1, "stag原创 2018-11-28 19:47:45 · 2046 阅读 · 0 评论 -
mybatis源码阅读系列之源码下载
一、百度输入mybatis 二、选择Git 项目 三、选择 mybatis 四、拉到页面最下面,选择最新 下载jar包 下载源码原创 2018-02-26 22:24:44 · 2175 阅读 · 0 评论 -
springmvc和mybaits整合案例
springmvc和mybaits整合整合思路 一、整合dao层 mybatis与spring的整合,最终目的是通过spring管理mapper接口. 使用mapper的扫描器自动扫描mapper接口在spring中进行注册。 二、整合Service层 通过spring管理Service接口 使用配置的方式将Service接口配置在spring配置文件中 这一步还需要实现事务控制 三原创 2017-06-02 21:00:04 · 405 阅读 · 0 评论 -
mybatis逆向工程操作
mybaits需要程序员自己编写sql语句,mybatis官方提供逆向工程 可以针对单表自动生成mybatis执行所需要的代码(mapper.java,mapper.xml、po..) 官方文档中提供的运行逆向工程的几种方法Running MyBatis GeneratorMyBatis Generator (MBG) can be run in the following ways:(1)Fro原创 2017-05-27 18:42:29 · 455 阅读 · 0 评论 -
MyBatis与Spring整合细节的优化
MyBatis与Spring整合细节的优化 整合过程参考:http://blog.csdn.net/leisure_life/article/details/72778179 优化部分:spring中配置接口扫描 <!-- mapper的配置 name:根据接口生成代理对象 <bean id="userMaper" class="org.mybatis.sp原创 2017-05-27 16:54:44 · 471 阅读 · 0 评论 -
nested exception is org.apache.ibatis.exceptions.PersistenceException
nested exception is org.apache.ibatis.exceptions.PersistenceExceptionCause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection;原创 2017-05-27 16:06:38 · 65405 阅读 · 3 评论 -
Caused by: java.lang.ClassNotFoundException: com.mchange.v2.ser.Indirector
Caused by: java.lang.ClassNotFoundException: com.mchange.v2.ser.Indirector原创 2017-05-27 13:50:00 · 1383 阅读 · 0 评论 -
MyBatis与Spring整合
整合背景 稍微大一点的项目都会使用SSM或者SSH框架,但是如果项目不是那么的大,用MyBatis和Spring就足够了,MyBatis的优势就是sql灵活,可以适应多变的需求;使用spring可以降低各模块之间的耦合度,方便系统的升级与维护。 整合思路 需要spring通过单例的方式管理SqlSessionFactory spring和mybatis整合生成代理对象,使用SqlSessio原创 2017-05-27 12:00:23 · 550 阅读 · 0 评论 -
二级缓存应用场景及其局限性
二级缓存应用场景适用于访问次数多且用户对查询结果实时性要求不高的查询,采用二级缓存可降低数据库访问量,提高访问速度,应用场景——耗时较高的统计分析sql、通讯记录查询(一个月一次)。 实现方法:通过设置刷新间隔时间,由MyBatis每隔一段时间自动清空缓存,根据数据变化频率设置缓存刷新时间flushInterval。局限性对细粒度级别的数据缓存实现不好,可以想象一下,一个二级缓存好不容易缓原创 2017-05-26 23:55:38 · 1090 阅读 · 0 评论 -
MyBatis整合EHCache
MyBatis整合EHCache 添加jar: mybatis-ehcache-1.0.3 下载地址:http://download.csdn.net/detail/leisure_life/9853653 ehcache-core-2.6.11 下载地址:http://www.java2s.com/Code/Jar/e/Downloadehcachecorejar.htm映射文件配置:原创 2017-05-26 23:30:31 · 275 阅读 · 0 评论 -
MyBatis二级缓存
一、全局配置中开启二级缓存<!-- 开启二级缓存(默认就是开启的) --><setting name="cacheEnabled" value="true"/>二、需要开启二级缓存的mapper.xml配置<mapper namespace="com.hl.mybatis.first.mapper.UserMapper"> <cache />三、相应的pojo类需要实现序列化接口publi原创 2017-05-26 21:51:56 · 261 阅读 · 0 评论 -
MyBatis的延迟加载的配置
延迟加载的配置的适用场景: 如果只查询单表就可以满足需求,为了提高数据库查询性能使用延迟加载,再查询关联信息。 延迟加载的配置 resultMap的配置<resultMap type="com.hl.myabtis.first.beas.Orders" id="ordersUserLazyLoadResultMap"> <!-- 对订单信息进行映射配置 -->原创 2017-05-26 17:29:09 · 570 阅读 · 0 评论 -
Mybatis多对多关联映射实例
Mybatis多对多关联映射实例需求:查询购买了商品的用户的信息和用户的订单信息以及订单的明细。这句话有点绕,稍微捋一捋,假设天明在京东商城有过一次购物经历这一次他买了三个旺仔小馒头和4瓶旺仔牛奶现在的需求就是需要(1)、查询出天明的信息(2)、天明下的那个订单的信息(3)以及订单里面购物清单的详细信息。 (4)、详细信息中商品的信息关联思路: 将用户信息映射至user中 在user类中天剑订单原创 2017-05-26 15:18:15 · 719 阅读 · 0 评论 -
Mybatis一对多关联映射实例
Mybatis一对多关联映射实例需求:查询购买了商品的用户的信息和用户的订单信息以及订单的明细。 这句话有点绕,稍微捋一捋,假设天明在京东商城有过一次购物经历这一次他买了三个旺仔小馒头和4瓶旺仔牛奶现在的需求就是需要(1)、查询出天明的信息(2)、天明下的那个订单的信息(3)以及订单里面购物清单的详细信息。 定义实体类 用户实体package com.hl.myabtis.first.beas原创 2017-05-26 11:01:43 · 2113 阅读 · 2 评论 -
MyBatis一对一查询使用ResultType映射
需求背景:查询订单信息关联用户信息。mapper.xml<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.hl.mybatis.first.mapper.OrdersCust原创 2017-05-25 16:47:14 · 976 阅读 · 0 评论 -
MyBatis一对一查询使用ResultType映射
MyBatis一对一查询使用ResultType映射 需求背景:查询订单信息关联用户信息。原创 2017-05-25 16:15:36 · 506 阅读 · 0 评论 -
MyBatis开发dao的两种方式
原始dao的开发需要编写dao接口及其实现类 需要在dao实现类中注入一个SqlSessionFactory user.xml<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!-- 对sql进行分开处理,隔离 -原创 2017-05-25 09:44:59 · 428 阅读 · 0 评论 -
MyBatis的执行过程总结
MyBatis的执行过程总结1、配置mybatis的配置文件 sqlMapConfig.xml(名称不固定) 2、创建SQLSessionFactory会话工厂 通过加载配置文件,加载mybatis运行环境,创建SQLSessionFactory会话工厂 核心代码:String resource = "SqlMapConfig.xml";InputStream inputStream =原创 2017-05-25 09:07:42 · 446 阅读 · 0 评论 -
使用foreach解析输入参数数组
背景:SELECT * FROM `user` WHERE sex = '0' and (id = 1 or id = 2 or id =3)//或者SELECT * FROM `user` WHERE sex = '0' and id IN(1,2,3)第一步在pojo类的包装类中加入private List<Integer> ids;并生成get/set方法 第二部修改mapper.xml原创 2017-05-24 23:16:49 · 1900 阅读 · 0 评论 -
MyBatis中sql片段的定义与引用
在开发中,SQL的拼接很常见,有很对拼接的sql具有重复性高的特点,这时最好把重复的sql抽取出来,作为公用的sql片段。定义sql片段:<!-- sql片段 建议:对单表进行sql片段的抽取,方便重用 抽取时不包含where --> <sql id="findUserSql"> <if test="userCustome原创 2017-05-24 22:41:05 · 18927 阅读 · 0 评论 -
Mybatis动态拼接sql
Mybatis动态拼接sql 需求:查询某张表时条件不确定,可能有一个,可能有多个,也可能没有条件<!-- 动态sql --><select id="fingUserList" parameterType="com.hl.myabtis.first.beas.UserQueryVo" resultType="com.hl.myabtis.first.beas.UserCustomer">原创 2017-05-24 22:28:55 · 3662 阅读 · 0 评论 -
Mapped Statements collection already contains value for com.xxx.xxx
映射文件中statement有重复的!Caused by: org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. Cause: java.lang.IllegalArgumentException: Mapped Statements collection already contains value for c原创 2017-05-24 22:24:59 · 3109 阅读 · 1 评论 -
MyBatis输出映射为resultMap
MyBatis输出映射为resultMap需求:从数据库查询出来的结果集有别名,需要映射到pojo类。 mapper.xml中定义resultMap<!-- 自定义resultMap输出类型 type:查询结果最终映射的类型,可以是别名 id: resultMap的唯一标识 --> <resultMap type="com.hl.myabtis.f原创 2017-05-24 18:11:37 · 381 阅读 · 0 评论 -
MyBatis中映射文件的输入映射为pojo包装类型
MyBatis中映射文件的输入映射为pojo包装类型原创 2017-05-24 16:14:03 · 3107 阅读 · 0 评论 -
MyBatis中通过Mapper接口加载映射文件
MyBatis中通过Mapper接口加载映射文件需要满足一下规范: 一、使用mapper代理方法,这是前提 二、mapper接口类名与mapper.xml文件名一致且在同一文件夹(目录)中原创 2017-05-24 11:44:32 · 2499 阅读 · 0 评论 -
SqlMapConfig.xml批量配置别名
在全局配置文件SqlMapConfig.xml中批量配置自定义类型的别名<typeAliases> <!-- 单个定义别名 --> <typeAlias type="com.hl.myabtis.first.beas.User" alias="user"/> <!-- 批量定义别名 指定包名,MyBatis会自动扫描包内类,自动原创 2017-05-24 11:18:09 · 1394 阅读 · 1 评论 -
org.apache.ibatis.exceptions.PersistenceException: Error building SqlSession
org.apache.ibatis.exceptions.PersistenceException: Error building SqlSession. The error may exist in mapper/usermapper.xml Cause: org.apache.ibatis.builder.BuilderException: Error parsing SQL Ma原创 2017-05-24 11:07:50 · 1476 阅读 · 2 评论 -
SqlMapConfig定义单个别名
在全局配置文件SqlMapConfig.xml中配置自定义类型的别名。<typeAliases> <typeAlias type="com.hl.myabtis.first.beas.User" alias="user"/></typeAliases>在映射文件中引用别名<select id="findUserById" parameterType="int" resultType="us原创 2017-05-24 11:02:54 · 654 阅读 · 0 评论 -
Cause: java.sql.SQLException: Access denied for user 'root1'@'localhost' (using password: YES)
数据库配置文件参数错误,导致无法连接数据库原创 2017-05-23 16:46:35 · 1161 阅读 · 0 评论 -
Invalid bound statement (not found)
Invalid bound statement (not found):原创 2017-05-23 16:00:34 · 765 阅读 · 0 评论 -
mapper代理开发
Mybatis Mapper代理开发笔记原创 2017-05-23 15:56:07 · 361 阅读 · 0 评论 -
not known to the MapperRegistry
not known to the MapperRegistry原创 2017-05-23 15:45:36 · 1041 阅读 · 0 评论 -
Mybatis Mapper代理开发规范
编写mapper接口需要遵循一些开发规范,这样MyBatis就可以自动生成mapper接口实现类代理对象。原创 2017-05-23 15:36:11 · 1427 阅读 · 0 评论 -
MyBatis与Hibernate本质区别与运用场景
MyBatis与Hibernate本质区别与运用场景 Hibernate:是一个标准的ORM框架(对象关系映射)。入门门槛较高,原则上不需要程序员写SQL,sql语句自动生成;因而对sql语句进行优化、修改就比较困难。 运用场景: 适用于需求变化不多的中小型项目,例如后台管理系统,erp、orm、ao系统。 MyBatis:专注sql本身“十八年”,需要程序员自己动手写sql,这样灵原创 2017-05-23 09:46:36 · 462 阅读 · 0 评论 -
Mybatis更新单条记录
Mybatis更新单条记录原创 2017-05-23 09:17:24 · 1722 阅读 · 0 评论