MyBatis系列
文章平均质量分 62
MyBatis系列
老猫喜欢今日爬山
不积跬步无以至千里
展开
-
MyBatis-Plus之多数据源
适用于多种场景:纯粹多库、 读写分离、 一主多从、 混合模式等目前我们就来模拟一个纯粹多库的一个场景,其他场景类似场景说明:我们创建两个库,分别为:mybatis_plus(以前的库不动)与mybatis_plus_1(新建),将mybatis_plus库的product表移动到mybatis_plus_1库,这样每个库一张表,通过一个测试用例分别获取用户数据与商品数据,如果获取到说明多库模拟成功。原创 2023-12-05 11:03:30 · 23 阅读 · 0 评论 -
MyBatis-Plus之通用枚举
表中的有些字段值是固定的,例如性别(男或女),此时我们可以使用MyBatis-Plus的通用枚举来实现。原创 2023-12-05 10:54:39 · 44 阅读 · 0 评论 -
MyBatis-Plus之分页插件、乐观锁插件
UserMapper中定义接口方法/*** 根据年龄查询用户列表,分页显示* @param page 分页对象,xml中可以从里面进行取值,传递参数 Page 即自动分页,必须放在第一位* @param age 年龄* @return*/UserMapper.xml中编写SQL--SQL片段,记录基础字段-->--></select>测试@Test//设置分页参数//获取分页数据System.out.println("当前页:"+page.getCurrent());原创 2023-12-05 10:49:38 · 342 阅读 · 0 评论 -
MyBatis-Plus之条件构造器和常用接口
Wrapper : 条件构造抽象类,最顶端父类AbstractWrapper : 用于查询条件封装,生成 sql 的 where 条件QueryWrapper : 查询条件封装UpdateWrapper : Update 条件封装AbstractLambdaWrapper : 使用Lambda 语法LambdaQueryWrapper :用于Lambda语法使用的查询WrapperLambdaUpdateWrapper : Lambda 更新封装Wrapper。原创 2023-12-05 10:30:41 · 426 阅读 · 0 评论 -
MyBatis-Plus之基本CRUD
通过观察BaseMapper中的方法,大多方法中都有Wrapper类型的形参,此为条件构造器,可针对于SQL语句设置不同的条件,若没有条件,则可以为该形参赋值null,即查询(删除/修改)所有数据。MyBatis-Plus中有一个接口 IService和其实现类 ServiceImpl,封装了常见的业务层逻辑详情查看源码IService和ServiceImpl。这是因为MyBatis-Plus在实现插入数据时,会默认基于雪花算法的策略生成id。原创 2023-12-05 09:17:13 · 124 阅读 · 0 评论 -
MyBatis-Plus教程之主键生成策略
很多人在使用Mybatis-Plus的时候可能会疑惑,自己明明没有配置主键的生成策略,但是执行新增操作时却自动生成了主键,而且还特别长。这是由于Mybatis-Plus默认就会采用雪花算法填充主键字段。今天就和大家详解聊聊Mybatis-Plus中主键生成的相关策略。Mybatis-Plus中的ID生成器主要分为2类,一类是,另一类是。自定义主键生成器也有2种方式。如果需要通过执行sql语句来生成id的,可以通过实现IKeyGenerator接口来自定义。原创 2023-12-04 17:23:03 · 2716 阅读 · 0 评论 -
MyBatis 和 MyBatis-plus 分页总结
MyBatisPlus中提供的(自带的)分页插件,非常简单,只需要简单的配置就可以实现分页功能。业务(场景):查询语句是自定义的需求:自定义查询语句如何配合分页插件来实现分页功能案例:根据年龄查询用户信息,并且分页Step1.UserMapper.java:接口方法/*** 需求:根据年龄查询用户列表,分页显示* 第一步:xml自定义分页,Mapper接口方法。原创 2023-12-04 15:36:00 · 292 阅读 · 0 评论 -
MyBatis教程之延迟加载(十三)
懒加载针对级联查询使用的,懒加载的目的是减少内存的浪费和减轻系统负担。你可以理解为按需加载,当我调用到关联的数据时才与数据库交互否则不交互。<settings>true:延迟加载,关联查询如果用到,加载全部属性false:非延迟加载,一次性加载全部数据true:延迟加载的属性中,用到 的属性才加载false:延迟加载的属性中,用到 + 用不到 的属性全部加载MyBatis——懒加载:lazyLoadingEnabled和aggressiveLazyLoading的使用-CSDN博客。原创 2023-12-01 16:01:50 · 24 阅读 · 0 评论 -
MyBatis教程之内置别名(十二)
MyBatis 可以使用 XML 或注解来配置和映射,将数据库中的记录映射成Java 的 POJO(Plain Old Java Objects,普通的 Java 对象),是一种 ORM(ORM Object Relational Mapping 对象关系映射)实现.。Mybatis 中文官网: https://mybatis.org/mybatis-3/zh/getting-started.html。避免了几乎所有的 JDBC 代码手动设置参数以及手动获取结果集的操作。它支持动态 SQL 以及数据缓存.原创 2023-12-01 10:04:27 · 38 阅读 · 0 评论 -
MyBatis教程之逆向工程(十一)
先创建Java实体类,由框架负责根据实体类生成数据库表。Hibernate是支持正向工程的。:先创建数据库表,由框架负责根据数据库表,反向生成如下资源:1.Java实体类2.Mapper接口3.Mapper映射文件。原创 2023-11-30 15:36:20 · 435 阅读 · 0 评论 -
MyBatis教程之缓存(十)
二级缓存是SqlSessionFactory级别,通过同一个SqlSessionFactory创建的SqlSession查询的结果会被缓存;一级缓存是SqlSession级别的,通过同一个SqlSession查询的数据会被缓存,下次查询相同的数据,就会从缓存中直接获取,不会从数据库重新访问。存在SLF4J时,作为简易日志的log4j将失效,此时我们需要借助SLF4J的具体实现logback来打印日志。d>查询的数据所转换的实体类类型必须实现序列化的接口。1) 不同的SqlSession对应不同的一级缓存。原创 2023-11-30 15:14:15 · 157 阅读 · 0 评论 -
MyBatis教程之动态SQL(九)
Mybatis框架的动态SQL技术是一种根据特定条件动态拼装SQL语句的功能,它存在的意义是为了解决拼接SQL语句字符串时的痛点问题。原创 2023-11-30 14:56:15 · 29 阅读 · 0 评论 -
MyBatis教程之自定义映射ResultMap(八)
此时可通过association和collection中的fetchType属性设置当前的分步查询是否使用延迟加载,fetchType="lazy(延迟加载)|eager(立即加载)"b>可以在MyBatis的核心配置文件中设置一个全局配置信息mapUnderscoreToCamelCase,可以在查询表中数据时,自动将_类型的字段名转换为驼峰。若字段名和实体类中的属性名不一致,但是字段名符合数据库的规则(使用_),实体类中的属性名符合Java的规则(使用驼峰)当开启时,所有关联对象都会延迟加载。原创 2023-11-30 14:44:36 · 272 阅读 · 0 评论 -
MyBatis教程之特殊SQL(七)
3、为班级分配学生,即将某学的班级id修改为新添加的班级的id。2、获取新添加的班级的id。原创 2023-11-30 14:10:47 · 27 阅读 · 0 评论 -
MyBatis教程之查询功能(六)
【代码】MyBatis教程之查询功能(六)原创 2023-11-30 14:01:19 · 39 阅读 · 0 评论 -
MyBatis教程之获取参数值的两种方式(五)
和的本质就是字符串拼接,的本质就是占位符赋值使用字符串拼接的方式拼接sql,若为字符串类型或日期类型的字段进行赋值时,需要手动加单引号;但是使用占位符赋值的方式拼接sql,此时为字符串类型或日期类型的字段进行赋值时,可以自动添加单引号。原创 2023-11-30 13:51:42 · 327 阅读 · 0 评论 -
MyBatis教程之CRUD(四)
1、查询的标签select必须设置属性resultType或resultMap,用于设置实体类和数据库表的映射关系resultType:自动映射,用于属性名和表中字段名一致的情况resultMap:自定义映射,用于一对多或多对一或字段名和属性名不一致的情况2、当查询的数据为多条时,不能使用实体类作为返回值,只能使用集合,否则会抛出异常TooManyResultsException;但是若查询的数据只有一条,可以使用实体类或集合作为返回值。原创 2023-11-30 13:37:14 · 14 阅读 · 0 评论 -
MyBatis教程之核心配置文件详解(三)
(2)数据源实际上是一套规范。这样就有了自己的数据源,比如:可以写一个属于自己的数据库连接池(数据库连接池是提供连接对象的,所以数据库连接池就是一个数据源)。例如:上面配置的最多连接数量是10,这里配置最多空闲的数量是5个,如果空闲第6个了,此时连接池为了保证最多空闲的数量是5个,会真正关闭多余的空闲的连接对象。default属性:后面跟着default属性,表示默认使⽤的是哪个环境,default后面填写的是environment的id,default的值只需要和environment的id值一致即可。原创 2023-11-30 11:30:22 · 41 阅读 · 0 评论 -
MyBatis教程之搭建(二)
工厂模式:如果创建某一个对象,使用的过程基本固定,那么我们就可以把创建这个对象的相关代码封装到一个“工厂类”中,以后都使用这个工厂类来“生产”我们需要的对象。MyBatis中的mapper接口相当于以前的dao。例如:表t_user,映射的实体类为User,所对应的映射文件为UserMapper.xml。b>mapper接口中方法的方法名和映射文件中编写SQL的标签的id属性保持一致。a>mapper接口的全类名和映射文件的命名空间(namespace)保持一致。MySQL版本:MySQL 5.7。原创 2023-11-30 11:07:53 · 34 阅读 · 0 评论 -
MyBatis教程之简介(一)
MyBatis最初是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Software Foundation迁移到了Google Code。随着开发团队转投Google Code旗下, iBatis3.x正式更名为MyBatis。代码于2013年11月迁移到Github。iBatis一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBatis提供的持久层框架包括SQL Maps和Data Access Objects(DAO)。原创 2023-11-30 10:54:28 · 29 阅读 · 0 评论