
MyBatis
文章平均质量分 51
chengqiuming
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
省市区三级联动选择组件后端实现
省市区三级联动选择组件后端实现。原创 2023-02-15 19:25:07 · 616 阅读 · 0 评论 -
MyBatis-Plus 高级查询
一wrapper介绍1类图2说明Wrapper : 条件构造抽象类,最顶端父类AbstractWrapper : 用于查询条件封装,生成 sql 的 where 条件QueryWrapper : 查询条件封装UpdateWrapper : Update 条件封装AbstractLambdaWrapper : 使用Lambda 语法LambdaQueryWrapper :用于Lambda语法使...原创 2021-10-03 11:00:23 · 1112 阅读 · 1 评论 -
MyBatis-Plus 的删除
一点睛1 物理删除真实删除,将对应数据从数据库中删除,之后查询不到此条被删除数据。2 逻辑删除假删除,将对应数据中代表是否被删除字段状态修改为“被删除状态”,之后在数据库中仍旧能看到此条数据记录。3 逻辑删除的使用场景可以进行数据恢复有关联数据,不便删除二实现流程图解三实战1数据表结构CREATE TABLE `user` ( `id` bigint(20) NOT NULL DEFAULT '0' COMMENT '主键ID', `NAME...原创 2021-10-02 17:11:30 · 1294 阅读 · 0 评论 -
MyBatis-Plus 的简单查询
一数据库mysql> select * from user;+---------------------+--------------+------+--------------------+---------------------+---------------------+---------+| id | NAME | age | email | create_time | update_t.原创 2021-10-02 16:42:42 · 1015 阅读 · 0 评论 -
MyBatis-Plus 分页查询
一点睛MyBatis Plus 自带分页插件,只要简单的配置即可实现分页功能。分页查询的开发流程见下图。二实战1数据库中的数据mysql> select * from user;+---------------------+--------------+------+--------------------+---------------------+---------------------+---------+| id | NA...原创 2021-10-02 16:07:24 · 946 阅读 · 0 评论 -
MyBatis-Plus 简单查询
一数据库中的数据mysql> select * from user;+---------------------+--------------+------+--------------------+---------------------+---------------------+---------+| id | NAME | age | email | create_time | upda.原创 2021-10-02 15:48:58 · 258 阅读 · 0 评论 -
MyBatis-Plus 实现乐观锁
一点睛1 主要适用场景当要更新一条记录的时候,希望这条记录无法被别人更新,也就是说实现线程安全的数据更新。2 乐观锁实现方式取出记录时,获取当前 version更新时,带上这个version执行更新时, set version = newVersion where version = oldVersion如果 version 不对,就更新失败3图例张三和李四更新同一条记录,如果不加乐观锁,谁后更新以谁的数据为准。加上乐观锁后,谁先抢到乐观锁,就以谁的更新为准,其..原创 2021-10-02 15:03:32 · 432 阅读 · 1 评论 -
MyBatis-Plus的自动填充功能
一需求项目中经常会遇到一些数据,每次都使用相同的方式填充,例如记录的创建时间,更新时间等。可以使用 MyBatis Plus 的自动填充功能,完成这些字段的赋值工作。二 数据库CREATE TABLE `user` ( `id` bigint(20) NOT NULL DEFAULT '0' COMMENT '主键ID', `NAME` varchar(30) DEFAULT NULL COMMENT '姓名', `age` int(11) DEFAULT NULL COMM.原创 2021-09-30 14:00:47 · 602 阅读 · 0 评论 -
MyBatis-Plus 主键策略
一各种策略比较 值 描述 个人看法 AUTO 数据库ID自增 一般情况下足矣 NONE 无状态,该类型为未设置主键类型(注解里等于跟随全局,全局里约等于 INPUT) 很少使用 INPUT insert前自行set主键值 看公司需求 ASSIG.原创 2021-09-29 18:29:21 · 5780 阅读 · 0 评论 -
MyBatis-Plus 基础环境搭建
一简介MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。 润物无声 只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑。 效率至上 只需简单配置,即可快速进行 CRUD 操作,从而节省大量时间。 丰富功能 热加载、代码生成、分页、性能分析等功能一应俱全。 二脚本CREATE TABLE USER( id BIGINT(...原创 2021-09-28 18:59:50 · 285 阅读 · 0 评论 -
Mybatis-plus新增和修改通用写法
一 自动填充在service_base中创建包:com.atguigu.guli.service.base.handler创建自动填充处理类:CommonMetaObjectHandler/*** @className: CommonMetaObjectHandler* @description: 自动填充处理* @date: 2020/11/19* @author: cakin*/@Componentpublic class CommonMetaObjectHandle..原创 2020-11-19 20:14:03 · 5726 阅读 · 0 评论 -
Mybatis-plus分页查询和条件查询通用写法
一查询条件VO/*** @className: TeacherQueryVo* @description: 讲师查询条件封装* @date: 2020/11/18* @author: cakin*/@ApiModel("Teacher查询对象")@Datapublic class TeacherQueryVo implements Serializable { private static final long serialVersionUID = 1L; @Api.原创 2020-11-18 21:04:55 · 7120 阅读 · 0 评论 -
Mybatis-plus代码生成器
一 MP代码生成器1 创建代码生成器service_edu 的 test 目录中创建代码生成器。public class CodeGenerator { @Test public void genCode() { // 数据库前缀 String prefix = "db191125_"; // 模块名 String moduleName = "edu"; // 1 创建代码生成器原创 2020-11-15 20:01:14 · 289 阅读 · 0 评论 -
Mybatis-plus条件构造器和常用接口
目录一 wapper介绍二查询方式三 测试用例1 ge、gt、le、lt、isNull、isNotNull2 eq、ne3 between、notBetween4 like、notLike、likeLeft、likeRight5 in、notIn、inSql、notinSql、exists、notExists6 or、and7 lambda表达式8 orderBy、orderByDesc、orderByAsc9 set、setSql一 wapper介绍.原创 2020-11-15 16:45:39 · 1085 阅读 · 0 评论 -
Mybatis-Plus的删除和逻辑删除
目录一 删除1 根据id删除记录2 批量删除3 简单条件删除二 逻辑删除1 物理删除和逻辑删除2 逻辑删除实现流程2.1 数据库修改2.2 实体类修改2.3 配置(可选)2.4 测试2.5 测试逻辑删除后的查询一 删除1 根据id删除记录 /** * 功能描述:根据Id进行删除 * * @author cakin * @date 2020/11/14 */ @Test ...原创 2020-11-14 20:38:22 · 2949 阅读 · 1 评论 -
Mybatis-Plus简单查询和分页
目录一简单查询1 通过多个id批量查询2 简单的条件查询二 分页1 分页插件1.1 添加分页插件1.2 测试selectPage分页2 返回指定的列一简单查询1 通过多个id批量查询/*** 功能描述:通过多个id批量查询** @author cakin* @date 2020/11/14*/@Testpublic void testSelectBatchIds() { List<User> users = user...原创 2020-11-14 18:36:21 · 1980 阅读 · 0 评论 -
Mybatis-Plus的更新操作-自动填充-乐观锁
目录一 更新操作二 自动填充1 数据库修改2 实体类修改3 实现元对象处理器接口4 测试代码5测试结果三 乐观锁1 场景2 乐观锁与悲观锁3 模拟不使用乐观锁修改价格产生冲突3.1 数据库中增加商品表3.2 添加数据3.3 实体类3.4 Mapper3.5 测试代码3.6测试结果4 乐观锁解决方案4.1 数据库中添加version字段4.2 取出记录时,获取当前version4.3 更新时,version + 1,如果 ..原创 2020-11-14 17:40:45 · 2772 阅读 · 0 评论 -
MyBatis-Plus的插入操作-数据库分库分表-MP的主键策略
目录一 插入操作二 数据库分库分表策略1 业务分库2 主从复制和读写分离3 数据库分表3.1 垂直分表3.2 水平分表三 MP的主键策略1 ASSIGN_ID2 AUTO 自增策略一 插入操作@SpringBootTestpublic class CRUDTests { @Autowired private UserMapper userMapper; @Test public void testInsert(){原创 2020-11-14 15:12:39 · 1724 阅读 · 0 评论 -
MyBatis-Plus 入门
一 简介MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。它的特点如下:润物无声:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑。效率至上:只需简单配置,即可快速进行 CRUD 操作,从而节省大量时间。功能丰富:热加载、代码生成、分页、性能分析等功能一应俱全。官网:http://mp.baomidou.com参考教程:http://mp.baomidou.com/guide原创 2020-11-14 14:29:30 · 571 阅读 · 0 评论 -
MyBatis-plus配置和测试微服务基本CRUD
一 整合MyBatis-Plus1 导入依赖<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.2.0</version></dependency>2 配置2.1 配置数据源a 导入数据库的驱动。&l原创 2020-10-15 20:39:39 · 407 阅读 · 0 评论 -
Mybatis日志相关
一日志工厂如果一个数据库操作,出现了异常,我们需要排错。日志就是最好的助手!sout、debug可以实现排错。官网图表 设置名 描述 有效值 默认值 logImpl 指定 MyBatis 所用日志的具体实现,未指定时将自动查找。 SLF4J LOG4J (常用) LOG4J2(常用) JDK_LOGGING COMMONS..原创 2020-06-21 12:08:03 · 303 阅读 · 0 评论 -
ResultMap结果集映射
目录一点睛二构造实体类和数据库不一致三解决方法一点睛它是解决实体类属性名和数据库字段名不一致的问题。二构造实体类和数据库不一致public class User { private int id; // 数据库字段是id private String name; // 数据库字段是name private String password; // 数据库字段是pwd}测试出现问题User{id=1, name='cakin', pw...原创 2020-06-20 21:56:38 · 669 阅读 · 0 评论 -
MyBatis生命周期和作用域
一点睛生命周期和作用域是至关重要的,因为错误的使用会导致非常严重的并发问题。1 SqlSessionFactoryBuilder一旦创建了SqlSessionFactory,就不再需要它了。一般用于局部变量。2SqlSessionFactory可以想象成数据库连接池。一旦被创建就应该在应用的运行期间一直存在,没有任何理由丢弃它或重新创建另一个实例。SqlSessionFactory 的最佳作用域是应用作用域。最简单的就是使用单例模式或者静态单例模式。3SqlSe...原创 2020-06-20 20:38:53 · 695 阅读 · 0 评论 -
Mybatis配置解析
目录一核心配置文件二环境配置(environments)三属性(properties)四别名五设置六映射器一核心配置文件mybatis-config.xmlMyBatis 的配置文件包含了会深深影响 MyBatis 行为的设置和属性信息。properties(属性)settings(设置)typeAliases(类型别名)typeHandlers(类型处理器)objectFactory(对象工厂)plugins(插件)environme...原创 2020-06-20 20:16:21 · 222 阅读 · 0 评论 -
MyBatis中万能的Map
目录一点睛二实战一点睛如果我们的实体类或者数据库中的表,字段或参数过多,可以考虑使用Map。Map传递参数,直接在sql中取出key即可。void insertUser2(Map<String, Object> map);parameterType="map"对象传递参数,直接在sql中取对象的属性即可。void insertUser(User user);parameterType="com.cakin.pojo.User"只有一个基本类型参数...原创 2020-06-16 17:02:52 · 2724 阅读 · 1 评论 -
MyBatis官方入门实例十步走
一数据库CREATE TABLE `user` ( `id` int(11) DEFAULT NULL, `name` varchar(255) DEFAULT NULL, `pwd` varchar(255) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;二pom文件<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.a..原创 2020-06-12 20:41:22 · 348 阅读 · 0 评论 -
MyBatis-plus如何实现树形结构展示
一 提出需求先看一下我们的需求,我们的需求是要实现下面这个页面的树形展示。使用的技术是MyBatis-plus。二 分析需求首先分析一下这个页面,这个页面是以树形结构的方式展示权限(资源)列表。虽然是树形展示,本质上,它还是一个表。我们可以这样定义权限(资源)表。CREATE TABLE `sys_resource` ( `id` varchar(30) NOT NULL, `name` varchar(50) NOT NULL, `parent_id` varchar(30) DEF原创 2020-05-10 21:22:44 · 11082 阅读 · 10 评论 -
MyBatis集锦
一MyBatis教程https://blog.csdn.net/hellozpc/article/details/80878563原创 2020-03-24 21:39:08 · 198 阅读 · 0 评论 -
MyBatis注解之一对多关联实战
一领域模型1Clazzpackage org.fkit.domain;import java.io.Serializable;import java.util.List;public class Clazz implements Serializable { private static final long serialVersionUID = 1L;...原创 2019-09-01 11:31:58 · 278 阅读 · 0 评论 -
MyBatis注解之一对一关联实战
一领域模型1Cardpackage org.fkit.domain;import java.io.Serializable;public class Card implements Serializable { private static final long serialVersionUID = 1L; private Intege...原创 2019-09-01 11:15:48 · 374 阅读 · 0 评论 -
MyBatis注解之增删查改
一领域模型package org.fkit.domain;import java.io.Serializable;/*** CREATE TABLE `tb_user` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `name` VARCHAR(18) DEFAULT NULL, `sex` CHAR(2) DEFAULT NULL, ...原创 2019-09-01 11:02:34 · 242 阅读 · 0 评论 -
MyBatis二级缓存实战
一领域模型package org.fkit.domain;import java.io.Serializable;/**** CREATE TABLE `tb_user` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `name` VARCHAR(18) DEFAULT NULL, `sex` CHAR(2) DEFAULT NULL,...原创 2019-09-01 09:24:18 · 345 阅读 · 0 评论 -
MyBatis一级缓存实战
一领域模型package org.fkit.domain;import java.io.Serializable;/**** CREATE TABLE `tb_user` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `name` VARCHAR(18) DEFAULT NULL, `sex` CHAR(2) DEFAULT NULL,...原创 2019-09-01 09:06:53 · 274 阅读 · 0 评论 -
MyBatis调用存储过程实战
一数据库设计1新建数据表CREATE TABLE `tb_user` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `name` VARCHAR(18) DEFAULT NULL, `sex` CHAR(2) DEFAULT NULL, `age` INT(11) DEFAULT NULL, PRIMARY KEY (`id`)...原创 2019-09-01 08:41:17 · 282 阅读 · 0 评论 -
MyBatis的动态SQL实战
一设计数据表CREATE TABLE tb_employee ( ID INT(11) PRIMARY KEY AUTO_INCREMENT, loginname VARCHAR(18), PASSWORD VARCHAR(18), NAME VARCHAR(18) DEFAULT NULL, SEX CHAR(2) DEFAULT NULL, AGE INT(11...原创 2019-09-01 08:06:37 · 329 阅读 · 0 评论 -
MyBatis多对多关系实战
一数据表设计CREATE TABLE tb_user(id INT PRIMARY KEY AUTO_INCREMENT,username VARCHAR(18),loginname VARCHAR(18),PASSWORD VARCHAR(18),phone VARCHAR(18),address VARCHAR(18));INSERT INTO tb_user(user...原创 2019-08-31 21:08:09 · 321 阅读 · 0 评论 -
MyBatis的一对一关系实战
一新建数据表CREATE TABLE tb_card(id INT PRIMARY KEY AUTO_INCREMENT,CODE VARCHAR(18));INSERT INTO tb_card(CODE) VALUES('432801198009191038');CREATE TABLE tb_person(id INT PRIMARY KEY AUTO_INCREMENT...原创 2019-08-31 19:42:17 · 261 阅读 · 0 评论 -
MyBatis的ResultMaps实战
一配置1 db.propertiesdriver=com.mysql.jdbc.Driverurl=jdbc:mysql://127.0.0.1:3306/mybatisusername=rootpassword=1234562log4j.xml<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE log...原创 2019-08-30 21:33:40 · 302 阅读 · 0 评论 -
MyBatis增删查改实战
一配置文件1db.propertiesdriver=com.mysql.jdbc.Driverurl=jdbc:mysql://127.0.0.1:3306/mybatisusername=rootpassword=1234562mybatis-config.xml<?xml version="1.0" encoding="UTF-8" ?><...原创 2019-08-30 20:24:06 · 210 阅读 · 0 评论 -
MyBatis注解之多对多关联实战
一领域模型1Userpackage org.fkit.domain;import java.io.Serializable;import java.util.List;import java.util.UUID;/***CREATE TABLE tb_user(id INT PRIMARY KEY AUTO_INCREMENT,username VARCHAR(1...原创 2019-09-01 11:54:14 · 655 阅读 · 0 评论