![](https://img-blog.csdnimg.cn/20190927151132530.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
MyBatis / MyBatisPlus
MyBatis
梁云亮
电 话:13264494458
微 信:13264494458
扣 扣:369950806
展开
-
获取MyBatis Plus 执行的完整的SQL语句
LogUtil . println("用户访问了:{},浏览器是:{},操作系统是:{},IP是:{},请求方式是:{},请求参数是:{},SQL语句是:{}" , url , browser , os , ip , requestType , parameters , sql);原创 2024-05-20 07:55:50 · 598 阅读 · 0 评论 -
获取MyBatis 执行的完整的SQL语句
注意:本示例介绍的方法仅支持MyBatis,在MyBatis Plus下不行。原创 2024-05-20 07:21:46 · 253 阅读 · 0 评论 -
mybatis项目启动报错:reader entry: ���� = v
去掉mybatis配置文件中关于别名的配置,然后在mapper.xml文件中使用完整的类名。原创 2023-10-04 11:50:23 · 639 阅读 · 0 评论 -
【精品】通用Mapper 批量更新bug解决方案
在使用tk.mybatis做批量更新时,程序会报错,说是执行的SQL语法错误,经研究源代码发现tk.mybatis在实现批量更新时是通过多次执行update语句实现的。这本身就不符合MySQL批量更新的语法,可以通过自定义Mapper的方式解决。环境:mysql8.x+mybatis3.5.13+tk.mybatis4.2.3。原创 2023-09-21 08:43:26 · 761 阅读 · 0 评论 -
mybatis-plus 查询 queryWrapper 排除指定字段
【代码】mybatis-plus 查询 queryWrapper 排除指定字段。原创 2023-08-21 11:38:32 · 1555 阅读 · 0 评论 -
Spring集成tk.mybatis
【代码】Spring集成tk.mybatis。原创 2023-07-10 08:38:05 · 620 阅读 · 0 评论 -
Mybatis中 用括号括起来where中的部分条件
【代码】Mybatis中 用括号括起来where中的部分条件。原创 2023-05-03 14:07:08 · 598 阅读 · 0 评论 -
【精品】将查询对象转换成MyBatisPlus中的QueryWrapper
上面大量的转换代码,不仅写起来烦琐,而且也不优雅。原创 2022-10-01 11:59:37 · 1635 阅读 · 0 评论 -
【精品】 自定义MyBatis增强,实现类似MyBatisPlus的功能
本博客中的内容是作者是企业中开发时实际用到的功能,感兴趣的读者可以将代码整合到自己的项目中,然后结合自己身业务进行调整。原创 2022-09-22 15:43:30 · 452 阅读 · 0 评论 -
【精品】MyBatis返回 新增数据 主键的值
假设数据库表中有一个bigint+autoincremnt类型的字段id,在采用MyBatis技术往表中添加数据时,可以通过以下几种方式获取新增记录的主键值。原创 2022-09-20 11:26:19 · 591 阅读 · 0 评论 -
Unable to make public int java.util.Arrays$ArrayList.size() accessible: module java.base does not “o
【代码】Unable to make public int java.util.Arrays$ArrayList.size() accessible: module java.base does not "o。原创 2022-09-14 19:43:48 · 3787 阅读 · 2 评论 -
【精品】MyBatis 进阶 之 Provider
MyBatis提供了以下几个 SQL 注解,通过这些注解可以在运行的过程中,指定类名和方法名返回 SQL 来执行。针对于执行映射语句,MyBatis 实例化类,执行方法。原创 2022-09-11 15:31:52 · 1402 阅读 · 0 评论 -
Intellij 自定义MyBatis映射文件模板
依次打开File–>Settings–>Editor–>File and Code Templates,在右边的窗口中单击+号然后。原创 2022-09-05 13:01:04 · 295 阅读 · 0 评论 -
mybatis reader entry 乱码
乱码原因原因是在mybatis的配置文件中加入了和别名相关的配置: <typeAliases> <package name="com.hc.domain"/> </typeAliases>解决方案方式一:去掉上面mybstis配置文件中和别名相关的配置方式二:保留上面mybstis配置文件中和别名相关的配置,但加入如下所示的依赖:<dependency> <groupId>org.jbos原创 2022-05-21 15:06:38 · 437 阅读 · 1 评论 -
Error creating document instance. Cause: org.xml.sax.SAXParseException; lineNumber: 19; columnNumbe
错误SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".SLF4J: Defaulting to no-operation (NOP) logger implementationSLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.java.lang.IllegalStateException: Failed to原创 2022-05-21 10:29:25 · 1146 阅读 · 0 评论 -
动态SQL与静态SQL
SQL 语句从编译和运行的角度可以分为静态 SQL和 动态 SQL,所谓SQL的动态和静态,是指SQL语句在何时被编译和执行。这两种 SQL 在使用方式、运行机制和性能表现等方面各有特点 :静态 SQL:静态 SQL 语句一般用于嵌入式 SQL 应用中,在程序运行前,SQL 语句在编程时候必须是确定好的,例如 SQL 语句中涉及的列名和表名必须是存在的。静态 SQL 语句的编译是在应用程序运行前进行的,编译的结果会存储在数据库内部。而后程序运行时,数据库将直接执行编译好的 SQL 语句,降低运行时的开原创 2022-05-08 22:46:20 · 1410 阅读 · 0 评论 -
mybatis缓存机制详解
mybatis提供了缓存机制减轻数据库压力,提高数据库性能。mybatis的缓存分为一级和二级两种:一级缓存:SqlSession级别的缓存,缓存的数据只在SqlSession内有效二级缓存:mapper级别的缓存,同一个namespace公用这一个缓存,所以对SqlSession是共享的一级缓存:一级缓存是基于 PerpetualCache 的 HashMap 本地缓存,其存储作用域为 Session,当 Session flush 或 close 之后,该 Session 中的所有 Cach原创 2021-12-16 11:05:15 · 3447 阅读 · 11 评论 -
MyBatisPlus 自动填充功能
表实体类@Getter@Setter@ToString@Builder@AllArgsConstructor@NoArgsConstructor@TableName(value = "tb_brand")public class Brand implements Serializable { private static final long serialVersionUID = -7170949725470318638L; /** * 品牌编号 */原创 2021-12-07 15:57:36 · 357 阅读 · 1 评论 -
MyBatis一对多查询,association实现 (重复,删除重写)
实体类Dept.javapublic class Dept { private int deptno; private String dname; private String loc; private List<Emp> emps; //…… getter/setter方法}Emp.javapublic class Emp { private Integer empno; private String ename; private Stri原创 2021-07-25 21:50:05 · 603 阅读 · 0 评论 -
MyBatisPlus XML 自定义分页
Mapper接口@Mapperpublic interface GoodsMapper extends BaseMapper<Goods> { /** * 根据条件分页查询 * * @param page * @param goodsCondition * @return */ IPage<GoodsItem> selectPage(IPage<GoodsItem> page, @Param(原创 2021-12-05 19:54:21 · 4790 阅读 · 2 评论 -
mybatis-plus整合p6spy
第一步:添加p6spy依赖<dependency> <groupId>p6spy</groupId> <artifactId>p6spy</artifactId> <version>3.9.1</version></dependency>第二步:修改application.ymlspring: datasource: driver-class-name: com.p6原创 2021-10-21 07:08:18 · 1894 阅读 · 0 评论 -
MyBatisPlus主键生成策略
我们可以通过 @TableId 注解的 type 属性来设置主键 id 的增长策略,一共有如下几种主键策略,可根据情况自由配置。AUTO(数据库 ID 自增)对于像 MySQL 这样的支持主键自动递增的数据库,我们可以使用 IdType.AUTO 策略。@TableName("tb_user")public class User { @TableId(type = IdType.AUTO) private Long id; private String name; p原创 2021-10-20 22:17:02 · 1160 阅读 · 1 评论 -
利用反射生成 MyBatisPlus中QueryWrapper动态条件
问题在MyBatisPlus中经常会用到如下所示的代码来构造查询条件:QueryWrapper<User> queryWrapper = new QueryWrapper<>();if (userQuery.getId() != null) { queryWrapper.eq("id", userQuery.getId());}if (userQuery.getName() != null) { queryWrapper.like("name", user原创 2021-08-10 20:05:22 · 1855 阅读 · 7 评论 -
SpringBoot中 MyBatis 和 MyBatisPlus 分页
Intellij 设置 控制台输出 自动换行让控制台输出随着Intellij窗口的宽度变化:原创 2019-11-03 12:13:19 · 2813 阅读 · 0 评论 -
MyBatis 映射文件日期时间字段比较
直接使用<![CDATA[ ]]><![CDATA[ AND #{birth} >= #{birth1} ]]>时间格式如果不一致可使用DATE_FORMAT函数转换<if test="createTime1 !=null and createTime1 !=''"><![CDATA[ and DATE_FORMAT(create_time, '%Y-%m-%d') >= DATE_FORMAT(#{createTime.原创 2021-08-04 07:39:36 · 1168 阅读 · 0 评论 -
MyBatis一对多查询,association分步实现
实体类Dept.javapublic class Dept { private int deptno; private String dname; private String loc; private List<Emp> emps; //…… getter/setter方法}Emp.javapublic class Emp { private Integer empno; private String ename; private Stri原创 2021-07-25 22:01:53 · 343 阅读 · 0 评论 -
MyBatis 多对一查询,级联实现
实体类:Dept.javapublic class Dept { private int deptno; private String dname; private String loc; private List<Emp> emps; //…… getter/setter方法}Emp.javapublic class Emp { private Integer empno; private String ename; private Str原创 2021-07-25 21:47:40 · 265 阅读 · 0 评论 -
MyBatis中当实体类的属性名和表中的字段名不一致时的解决方案
比如数据库字段create_time,对应实体类属性createTime方案一:写SQL语句时起别名示例代码:select create_time createTime from xxxxx;方案二:开启驼峰命名规则MyBatis配置文件中:<setting name=”mapUnderscoreToCamelCase” value=”true”/>SpringBoot的yml文件中:mybatis.configuration.map-underscore-to-camel原创 2021-07-24 09:21:23 · 713 阅读 · 0 评论 -
MyBatis-Plus 进阶 之 lambda 编程
代码@Servicepublic class UserServiceImpl { @Resource private UserMapper userMapper; public void select1(){ QueryWrapper<User> qw = new QueryWrapper<>(); qw.select("id","name","nickname"); List<User> u原创 2021-04-23 18:00:07 · 3952 阅读 · 9 评论 -
MyBatisPlus条件构造器常用方法
常用方法eq 等于eq(R column, Object val)eq(boolean condition, R column, Object val)ne 不等于ne(R column, Object val)ne(boolean condition, R column, Object val)gt 大于gt(R column, Object val)gt(boolean condition, R column, Object val)ge 大于等于ge(R column,原创 2021-04-23 17:08:19 · 2947 阅读 · 11 评论 -
<statement> or DELIMITER expected, got ‘id‘
报错Intellij中使用MyBatis时Mapper.xml文件报错,如下图所示:解决方案依次打开:setting->Language Injections->xml:iBatis3:sql|select|insert|update|delete找到Local name ,然后将将“sql|”删除即可原创 2021-04-18 12:52:46 · 3062 阅读 · 0 评论 -
MyBatis中的jdbcType
MyBatis中常用的jdbcTypeBIT FLOAT CHAR TIMESTAMP OTHER UNDEFINEDTINYINT REAL VARCHAR BINARY BLOB NVARCHARSMALLINT DOUBLE LONGVARCHAR VARBINARY CLOB NCHARINTEGER原创 2021-04-04 17:24:11 · 1318 阅读 · 1 评论 -
MyBatis批量更新
MySQL when-case语句语法:CASE <条件表达式>WHEN <条件值> THEN <SQL语句块>WHEN <条件值> THEN <SQL语句块>…[ELSE <SQL语句块>]END CASE ;MyBatis批量更新Mapper文件int updateDeptLocs(@Param("depts")List<Dept> DeptList);对应的映射文件:<upda原创 2021-04-04 13:01:01 · 256 阅读 · 0 评论 -
Intellij中格式化mapper.xml整齐
默认情况下Intellij在格式化mapper.xml文件时,代码会变得非常乱不易查看,采用如下配置可以使格式化后的代码变得整齐。原创 2021-03-27 09:02:07 · 5394 阅读 · 4 评论 -
Intellij中格式化mapper.xml时关键字大写及去除列名与别名之间多余空格
存在问题解决方法:Idea窗口点击file,点击setting,搜索框输入code style,点击SQL,选择MYSQL,在case选项卡中将Keywords选择为To upper:在Queries选项卡中将SELECT clause中的Align AS复选框取消:代码格式化后的效果...原创 2021-03-27 08:56:45 · 1464 阅读 · 0 评论 -
【精品】MyBatis 和 MyBatisPlus 自定义SQL并支持分页
Mapper接口import com.baomidou.mybatisplus.extension.plugins.pagination.Page;@Mapperpublic interface CategoryMapper extends BaseMapper<Category> { List<Category> chaXun(Page page, @Param("state")Integer state);}注:page参数为分页对象,它必须作为方法的第一个参原创 2020-07-31 16:52:48 · 2529 阅读 · 1 评论 -
MyBatisPlus分页的同时指定排序规则
分页配置MyBatis Plus要想使用分页,需要添加如下配置:@Configuration@ConditionalOnClass(value = {PaginationInterceptor.class})public class MybatisPlusConfig { /** * 分页插件 * @return */ @Bean public PaginationInterceptor paginationInterceptor() {原创 2020-07-29 15:17:47 · 4725 阅读 · 1 评论 -
MyBatis 多字段动态排序
采用MyBatis实现多字段技术的步骤:第一步:在实体类中添加字段sortMappublic class Admin { //...... private Map<String,String> sortMap; //排序}第二步:在映射文件中添加如下代码:<select id="selectByCondition" resultMap="BaseResultMap" parameterType="Admin"> select * from db_rb原创 2020-05-23 01:23:00 · 4146 阅读 · 3 评论 -
基于SpringBoot和MyBatisPlus的项目开发脚手架
代码下载地址:基于SpringBoot和MyBatisPlus的项目开发脚手架数据库为MySQL8.x项目集成模块说明:工具类说明Base64Util:加密解密工具类JsonUtil:jackson工具类,参考博客:Jackson工具类RedisUtil:Redis操作工具类RandomUtil:生成随机数、随机字符串、随机日期、随机电话号码、随机汉字姓名DateTimeUtil...原创 2020-05-03 17:27:18 · 1974 阅读 · 2 评论 -
SpringBoot整合mybatis
项目目录结构:第一步:创建Maven项目并添加依赖<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test<...原创 2020-04-21 23:22:11 · 953 阅读 · 14 评论