MyBatis
文章平均质量分 60
MyBatis学习笔记
陆源东
这个作者很懒,什么都没留下…
展开
-
17.MyBatis缓存
MyBatis缓存MyBatis默认了两级缓存默认情况下,只开启一级缓存 (SqlSession级别的缓存(本地缓存))二级缓存需要手动开启和配置(namespace级别)MyBatis还提供了缓存接口Cache , 用来自定义二级缓存一级缓存SqlSession级别的缓存 (本地缓存)与数据库同一次会话期间查询到的数据会放到本地缓存中如果以后需要获取相同的数据,直接从缓存中拿去 , 不必去数据库查询测试开启日志工厂<settings> <sett原创 2021-05-23 12:29:22 · 292 阅读 · 1 评论 -
16.动态SQL
动态SQL根据不同的条件生成不同的SQL语句动态 SQL 是 MyBatis 的强大特性之一。如果你使用过 JDBC 或其它类似的框架,你应该能理解根据不同条件拼接 SQL 语句有多痛苦,例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表最后一个列名的逗号。利用动态 SQL,可以彻底摆脱这种痛苦。ifchoose (when, otherwise)trim (where, set)foreachif 使用动态 SQL 最常见情景是根据条件包含 where 子句的一部分来动态拼接S原创 2021-05-23 12:24:47 · 184 阅读 · 1 评论 -
15.复杂查询
复杂查询resultMap解决包含对象的复杂映射association : 包含对象collection : 包含对象的列表关联id 和 result 元素都将一个列的值映射到一个简单数据类型(String, int, double, Date 等)的属性或字段。这两者之间的唯一不同是,id 元素对应的属性会被标记为对象的标识符,在比较对象实例时使用。 这样可以提高整体的性能,尤其是进行缓存和嵌套结果映射(也就是连接映射)的时候。<association property="a原创 2021-05-23 12:24:17 · 366 阅读 · 0 评论 -
MyBatis Exception 2字节的UTF-8序列的字节2无效
MyBatis Exception 2字节的UTF-8序列的字节2无效xml文件中的中文注释的问题,有两种解决方案:一、删除*.xml文件中文注释二、将xml文件顶部的encoding=UTF-8改为encoding=UTF8<?xml version="1.0" encoding="UTF-8" ?> <!--Exception--><?xml version="1.0" encoding="UTF8" ?> <!--正确-->...原创 2021-05-22 09:55:47 · 263 阅读 · 0 评论 -
14.Lombok
Lombok作用 Lombok项目是一个Java库,它会自动插入编辑器和构建工具中,Lombok提供了一组有用的注释,用来消除Java类中的大量样板代码。仅五个字符(@Data)就可以替换数百行代码从而产生干净,简洁且易于维护的Java类。安装使用IDEA安装插件Settings——>Plugins——>Lombok导入依赖<groupId>org.projectlombok</groupId><artifactId>lomb原创 2021-05-22 09:55:03 · 73 阅读 · 0 评论 -
13.注解实现CRUD
注解实现CRUD@Param()基本类型的参数或String类型的参数需要加此注解引用类型不需要加mybatis在匹配sql语句的时候 ,会直接使用 Param()注解中的名字@Select("select * from user where id=#{id}")User getUserById(@Param("id1") int id);//如上,Mybatis匹配的时候 #{id} 由于读取 id1 ,找不到'id' ,会报错@Select()Select注解 : 查询语句注解原创 2021-05-22 09:54:32 · 128 阅读 · 0 评论 -
12.注解开发
注解开发作用对于简单的SQL来说,使用注解可以不用在mapper.xml映射文件中进行配置。实现直接在接口上实现接口类//根据id查询用户@Select("select * from user where id = #{id}") //Select注解public User getUserById(int id);使用了注解之后,就不用为该函数在mapper.xml文件里面进行映射配置了在核心配置文件中配置接口在mybatis-config.xml中进行 class映射器配置(原创 2021-05-22 09:54:09 · 75 阅读 · 0 评论 -
11.日志
日志日志工厂如果数据库操作出现了异常,日志可以高效地排错logImpl 属性配置 (在设置中)logImpl指定 MyBatis 所用日志的具体实现,未指定时将自动查找。SLF4J | LOG4J | LOG4J2 | JDK_LOGGING | COMMONS_LOGGING | STDOUT_LOGGING | NO_LOGGING未设置标准日志输出STDOUT_LOGGING<configuration> <!--引入外部配置文件原创 2021-05-22 09:53:19 · 874 阅读 · 0 评论 -
10.Mybatis执行流程
Mybatis执行流程原创 2021-05-22 09:52:05 · 66 阅读 · 0 评论 -
9.生命周期和作用域
生命周期和作用域MyBatis三个作用域(核心接口)SqlSessionFactoryBuilder 这个类可以被实例化、使用和丢弃,一旦创建了 SqlSessionFactory,就不再需要它了。因此 SqlSessionFactoryBuilder 实例的最佳作用域是方法作用域(也就是局部方法变量)。你可以重用 SqlSessionFactoryBuilder 来创建多个 SqlSessionFactory 实例,但最好还是不要一直保留着它,以保证所有的 XML 解析资源可以被原创 2021-05-22 09:51:23 · 88 阅读 · 0 评论 -
8.分页
分页使用limit分页SELECT * FROM user LIMIT startIndex,endIndex ; 1个参数,表示记录数SELECT * FROM user LIMIT 5; #检索前5条数据2个参数有关键字 OFFSETSELECT * FROM user LIMIT 2 OFFSET 3 ; # 从第3+1条记录开始,显示两个(查询第4、5条数据) pageSize 与 startIndex无OFFSET 参数1为开始记录数 参数2为要显示的记录数量SE原创 2021-05-22 09:50:57 · 69 阅读 · 0 评论 -
7.ResultMap结果集映射
ResultMap结果集映射引入原因属性名与字段名不一致 。则在mapper.xml映射文件中 mybatis无法将从数据库中查找出来的结果集的列名对应地转化为pojo类的对应属性。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JDYpr8uX-1621648162639)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210521203012505.png)][外链图原创 2021-05-22 09:49:38 · 271 阅读 · 1 评论 -
6.类型别名typeAliases
类型别名typeAliases解决的问题在之前的 mapper.xml配置文件时, parameterType与resultType如果是对象,需要是对象的 全限定名冗余且易出错<select id="getUserList" resultType="com.liu.pojo.User"> <!--resultType需要使用全限定名 集合使用内部泛型类--> select * from mybatis.user</select>解决方案原创 2021-05-22 09:48:45 · 238 阅读 · 1 评论 -
5.Map和模糊查询
Map和模糊查询引入的原因在之前的CRUD操作中,INSERT与UPDATE都是传入了POJO类 , 这意味着当一个POJO类十分复杂的时候,我们在执行操作的时候每次都需要新建这个类的实例,十分不方便,例如 当UPDATE的时候, 假设我们只需要根据id修改name , 如果传入的是User ,就需要**新建一个User实例,为其附上参数对应的值,然后传入 **,但实际上 password属性是不需要的除此之外,传入POJO类也为**#{}带来了限制 **: #{} 只能是 POJO类的属原创 2021-05-22 09:47:21 · 242 阅读 · 1 评论 -
2.Mybatis环境搭建与配置
Mybatis环境搭建与配置搭建数据库构建Maven项目<dependency> <groupId>org.mybatis</groupId> <!--Mybatis--> <artifactId>mybatis</artifactId> <version>3.5.7</version> </depend原创 2021-05-22 09:45:18 · 106 阅读 · 1 评论 -
3.CRUD操作
CRUD操作selectid : 对应namespace接口中的方法名resultType : Sql语句执行的返回值parameterType : 参数类型 , 在Sql中参数使用#{}表示当传入POJO类时, MyBatis会自动根据 POJO类来解析 , 使用#{}来表示其属性的名字只有一个基本类型参数的时候,可以不写parameterType而直接取出来根据id查询用户//UserMapperpublic interface UserMapper { pub原创 2021-05-22 09:44:40 · 73 阅读 · 0 评论 -
1.Mybatis介绍
Mybatis介绍什么是MybatisMybatis中文文档 : https://mybatis.org/mybatis-3/zh/index.htmlMyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO为数据库中的记录。Mybatis的获取Maven仓库https://mvnrepo原创 2021-05-22 01:03:15 · 144 阅读 · 1 评论