版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
在 Spring Cloud 项目中,生产环境需要打印mybatis的sql语句日志,但是mybatis打印的sql的默认日志级别是[debug],如果生产环境想看到sql语句,就必须开启[debug]级别的日志打印,这样做debug日志量过大,显然不可行。
众所周知,hibernate可以通过配置show_sql在控制台显示sql语句,Mybatis可不可以呢?当然是可以的,将ibatis log4j运行级别调到DEBUG可以在控制台打印出ibatis运行的sql语句,方便调试:
在上一篇《spring boot 和mybatis整合打印sql语句》有网友说这样打印不出来。今天凯哥就给大家介绍第二种打印方式: 在resource文件夹下新建:logback.xml
可以看到,控制台输出的sql语句是更新,而不是删除。会将logic_flag字段设置成-1(-1是我们在application.yml或者@TableLogic注解中指定的值)
springboot+mybatis整合过程中,开启控制台sql语句打印的多种方式: 附:mybatis官方文档
MySQL自5.7版本就开始提供JSON类型,本次问题就是在使用JSON类型时出现的MySQL服务可以正常查询而使用Mybatis查询失效问题。
mybati的一级缓存作用域为session,当执行opensession()后,结果和sql会被存入缓存中,如果下次执行的sql(参数 语句)相同就直接从缓存当中拿取,而不再执行sql从数据库查询
采用 Mybatis 的代理开发方式实现 DAO 层的开发,这种方式是我们后面进入企业的主流。
plugin that loads a background image into editors
本文以Spring整合MyBatis环境下,介绍MyBatis逆向工程自动生成pojo,mapper,dao的Java类。MyBatis的一个主要的特点就是需要程序员自己编写sql,那么如果表太多的话,难免会很麻烦,所以mybatis官方提供了一个逆向工程,可以针对单表自动生成mybatis执行所需要的代码,一般在开发中,常用的逆向工程方式是通过数据库的表生成代码。下图为逆向工程依赖的jar包。
MyBatis 的强大特性之一便是它的动态 SQL。如果你有使用 JDBC 或其他类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句有多么痛苦。
Maven是一个优秀的项目构建和管理工具,使用Maven构建项目非常方便,可以非常方便地处理Jar包依赖问题。这里提供构建MyBatis应用的的pom.xml配置内容。
采用 Mybatis 的代理开发方式实现 DAO 层的开发,这种方式是我们后面进入企业的主流。
总结了平时工作中常用的12款IDEA插件,后端和前端的都有了,附上我的使用技巧,看完之后开发效率杠杠的! Lombok Lombok为Java项目提供了非常有趣的附加功能,使用它的注解可以有效的地解决那些繁琐又重复的代码,例如 Setter、Getter、toString、equals、hashCode 以及非空判断等。 举个例子,我们给一个类添加@Getter和@Setter注解: /** * 修改订单费用信息参数 * Created by macro on 2018/10/29. */ @Gett
SQL里的字体要与实体类的成员变量相对应,大小写也要注意。 注意区分属性ResutlMap和ResultType的使用,别混了。
SpringBoot使用 Commons Logging 进行所有内部日志的记录,但默认配置也提供了对常用日志的支持,如 Java Util Logging,Log4J2,和Logback. 每种logger都可以通过配置使用控制台或文件输出日志内容。
上篇我们简单介绍了MybatisPlus的方便之处,这篇来深入了解MybatisPlus的其他功能。
对于入参传入的是一个user对象,对象包含了userCode,userName,userPassword,gender,address,phone这些属性, 一般我们插入对象,插入什么属性就需要在sql语句中写上对应的字段名,然后在values中写上对应的字段名的值。如果插入场景很多,比如有此插入只需两个字段,有些插入只需三个字段,那我们就需要写多个方法,多条对应的sql语句。mybatis支持动态sql,对于增、删、查、改都支持。下面我们来修改上面的示例语句。 首先对于示例代码:
上一章节,我们讲解了通过mybatis的懒加载来提高查询效率,那么除了懒加载,还有什么方法能提高查询效率呢?这就是我们本章讲的缓存。 本篇源码下载链接:http://pan.baidu.com
mapper中使用#{}格式的语法在mybatis中使用Preparement语句来安全的设置值
通用Mapper都可以极大的方便开发人员。可以随意的按照自己的需要选择通用方法,还可以很方便的开发自己的通用方法。极其方便的使用MyBatis单表的增删改查。
在开发的过程中,我们经常会遇到由于sql语句书写错误导致的bug,那么如何来解决这种困扰呢?如果方法执行完了可以打印出完整的sql语句,就可以方便我们判断执行的是否正确,所以我们希望有一个可以打印sql语句的插件。p6spy就是一款这样的工具,下面给大家介绍一下p6spy的使用。
删除application.yml日志配置 # set log level logging: level: root: info mybatis-plus: mapper-locations: com/ssm/eduservice/mapper/xml/*.xml # mybatis 日志 configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl 在resources中创建logbac
看控制台输出可以看出来,第一次执行了SQL查询,第二次直接打印的结果集,没有查询数据库。
前阵子和朋友聊天,他说他们项目有个需求,要实现主键自动生成,不想每次新增的时候,都手动设置主键。于是我就问他,那你们数据库表设置主键自动递增不就得了。他的回答是他们项目目前的id都是采用雪花算法来生成,因此为了项目稳定性,不会切换id的生成方式。
OK,从运行结果上我们可以知道结果集返回到同一个对象中,而他们的哈希值反而不一样,说明执行第二次查询的时候新建了一个对象并且该对象指向那个对象并且将SqlSessionFactory中的数据赋值到新建的那个对象。其实从控制台打印的日志我们也可以得出,并没有执行查询方法,因为没有打印SQL语句,而且缓存也是从0.0改成了0.5,因此我们可以断定二级缓存存放的是数据而不是对象。
上一篇文章我们学习了MyBatis框架的环境搭建以及对sqlsessionfactory有个大致的了解,这篇文章就要运用搭建好的环境进行增删改查并且指出一些细节。
id为5的数据成功修改,UPDATE语句中只出现了代码中设置了属性值的属性,修改属性时会进行非空判断,只修改非空的属性值。
目录 一、什么是缓存 二、Mabtis一级缓存 (1)测试一级缓存 (2)清空一级缓存 三、Mybatis二级缓存 (1)开启二级缓存 (2)测试二级缓存 ---- 一、什么是缓存 缓存是内存当中一块存储数据的区域,目的是提高查询效率。MyBatis会将查询结果存储在缓存当中,当下次执行相同的SQL时不访问数据库,而是直接从缓存中获取结果,从而减少服务器的压力。 什么是缓存? 存在于内存中的一块数据。 缓存有什么作用? 减少程序和数据库
链接:https://juejin.cn/post/7221461552343072828
持久化是将程序数据在持久状态和瞬时状态间转换的机制。即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的对象存储在数据库中,或者存储在磁盘文件中、XML数据文件中等等。JDBC就是一种持久化机制。文件IO也是一种持久化机制。
转载 https://blog.csdn.net/testcs_dn/article/details/67640212
本篇源码下载链接:http://pan.baidu.com/s/1eRHTsIm 密码:a5wn
目前的大环境下,使用Mybatis作为持久层框架还是占了绝大多数的,下面我们来说一下使用Mybatis的几种姿势。
PS:最后声明 本文章没啥大用,只是作者本人在编程之路上,记录一些自己的东西,主要目的是作为自用,辅助目的是可以帮助汇总一些好用的IDEA快捷键or插件。
本篇将带你快速学会在SpringBoot工程下,实现MaBatis对数据的增删改查功能。
我们在测试SQL的时候,要是能够在控制台输出 SQL 的话,是不是就能够有更快的排错效率?
MyBatis-Plus是一款非常强大的MyBatis增强工具包,只做增强不做改变,在不用编写任何SQL语句的情况下即可以极其方便的实现单一、批量、分页等操作。
今天通过一个案例来学习一下 SpringBoot整合 MyBatis,以及介绍一下 lombok工具。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/106459.html原文链接:https://javaforall.cn
对于一个猿来说,工欲善其事,必先利其器,一个好的开发工具就是程序员的左膀右臂,idea作为大部分java猿的开发工具,无疑是最好用的ide了。IntelliJ在业界被公认为最好的java开发工具,尤其在智能代码助手、代码自动提示、重构、J2EE支持、各类版本工具(git、svn等)、JUnit、CVS整合、代码分析、 创新的GUI设计等方面的功能可以说是超常的。
MyBatis是一个广泛使用的Java持久化框架,它提供了简单且强大的数据库访问能力。除了核心功能外,MyBatis还支持插件机制,允许开发者对其进行扩展和定制。插件是MyBatis框架的一个关键特性,它可以在SQL语句执行前后、结果集处理前后等关键点进行拦截和修改。本文将深入探究MyBatis插件的运行原理,并通过一个代码示例来演示插件的使用。
MyBatis逆向工程是指可以根据数据库表的分析逆向生成Entity实体类、Mapper接口以及Mapper XML等类和XML文件,逆向工程会用到MyBatis官方提供的代码生成器即MyBatis Generator
本文由 小马哥 创作,采用 知识共享署名4.0 国际许可协议进行许可 本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名 最后编辑时间为: 2022/05/04 19:38
逻辑删除不会在数据库中删除数据,只是通过一个字段用来标识被删除的记录,数据仍然保存在数据库中。
输出主键为null,实际插入数据库后已经生成了自增主键,只是程序没有获取到插入成功后生成的主键。 要获取生成的主键Value需要在Porsche实体类与数据主主键对应的属性上增加@GeneratedValue(strategy = GenerationType.IDENTITY) 再次执行测试
来源:https://www.jianshu.com/p/7c569ca6852e
领取专属 10元无门槛券
手把手带您无忧上云