simple curd

  • 1. mybatis-plus
  • 2. 以用户表为例,德莫

1. mybatis-plus

mybatis的升级版,curd的奇淫技巧。

MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis
的基础上只做增强不做改变,为简化开发、提高效率而生。

特性:

  • 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑
  • 损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作
  • 强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD
    操作,更有强大的条件构造器,满足各类使用需求
  • 支持 Lambda 形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错
  • 支持主键自动生成:支持多达 4 种主键策略(内含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解决主键问题
  • 支持 ActiveRecord 模式:支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可进行强大的 CRUD
    操作
  • 支持自定义全局通用操作:支持全局通用方法注入( Write once, use anywhere )
  • 内置代码生成器:采用代码或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller
    层代码,支持模板引擎,更有超多自定义配置等您来使用
  • 内置分页插件:基于 MyBatis 物理分页,开发者无需关心具体操作,配置好插件之后,写分页等同于普通 List 查询
  • 分页插件支持多种数据库:支持
    MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer 等多种数据库
  • 内置性能分析插件:可输出 Sql 语句以及其执行时间,建议开发测试时启用该功能,能快速揪出慢查询
  • 内置全局拦截插件:提供全表 delete 、 update 操作智能分析阻断,也可自定义拦截规则,预防误操作

2. 以用户表为例,德莫

创建好springboot项目,导入mybatis-plus, 数据库驱动,lombok。


依赖:

    <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><!-- mybatis plus --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.1</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies>

表:

create table mybatis_study.user
(id    bigint auto_increment comment '主键ID'primary key,name  varchar(30) null comment '姓名',age   int         null comment '年龄',email varchar(50) null comment '邮箱',gmt_create datetime null comment '创建时间',gmt_update datetime null comment '数据修改时间'
);

日志,用于打印sql,和数据库信息:

# dataSource configurer
spring:datasource:url: jdbc:mysql://localhost:3306/mybatis_study?serverTimezone=Asia/Shanghaidriver-class-name: com.mysql.cj.jdbc.Driverusername: rootpassword: 123456# log4j std out
mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

实体类:

package cn.bitqian.entity;import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;import java.util.Date;/*** user table* @author echo lovely* @date 2020/11/14 10:20*/@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {// 主键自增 前提主键auto@TableId(type = IdType.AUTO)private Long id;private String name;private int age;private String email;// 插入时填充字段@TableField(fill = FieldFill.INSERT)private Date gmtCreate;// 更新或者插入时填充字段@TableField(fill = FieldFill.INSERT_UPDATE)private Date gmtModify;}

mapper:

package cn.bitqian.mapper;import cn.bitqian.entity.User;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;/*** user mapper* @author echo lovely* @date 2020/11/14 10:23*/
@Repository
public interface UserMapper extends BaseMapper<User> {// curd 方法已经写好了
}

字段填充器,要加入ioc容器

package cn.bitqian.handler;import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;import java.util.Date;/*** 字段自动填充* @author echo lovely* @date 2020/11/14 11:49*/@Component
@Slf4j // lombok
public class MyMetaObjectHandler implements MetaObjectHandler {// 插入时填充@Overridepublic void insertFill(MetaObject metaObject) {log.info("新增,gmtCreate,gmtModify字段日期自动填充...");// 两个字段在 插入时填充this.setFieldValByName("gmtCreate", new Date(), metaObject);this.setFieldValByName("gmtModify", new Date(), metaObject);}// 修改时填充@Overridepublic void updateFill(MetaObject metaObject) {log.debug("修改,gmtModify日期自动填充更新...");// 在修改时填充this.setFieldValByName("gmtModify", new Date(), metaObject);}
}

测试:

package cn.bitqian;import cn.bitqian.entity.User;
import cn.bitqian.mapper.UserMapper;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;import java.util.List;@SpringBootTest
class MybatisPlus01ApplicationTests {@Autowiredprivate UserMapper userMapper;@Testvoid contextLoads() {List<User> userList = userMapper.selectList(null);userList.forEach(System.out::println);}@Testvoid addUser() {User user = new User();user.setName("abc");user.setAge(19);user.setEmail("abc@abc.com");// 插入操作,默认雪花算法,主键生成为long类型int count = userMapper.insert(user);System.out.println(count);System.out.println(user);/*** 默认。* 结果1:* 1* User(id=1327447426226786306, name=abc, age=19, email=abc@abc.com)*//*** 结果2: 设置主键自增 IdType.auto* User(id=1327447426226786307, name=abc, age=19, email=abc@abc.com)*/}@Testvoid updateUser() {User user = new User();user.setId(1327447426226786310L);user.setAge(18);userMapper.updateById(user);}}

mybatis plus 新增,修改相关推荐

  1. 【MyBatis】MyBatis对Log4J的支持、MyBatis实现新增、删除、修改、查询

    准备:数据库数据 people表 people表数据 eclipse项目结构 一.注解 注解存在的意义:简化xml 文件的开发. 注解在servlet 3.0 规范之后大力推广的. 注解前面的@XXX ...

  2. Oracle触发器之表新增/修改的触发操作

    Oracle触发器之表新增/修改的触发操作 Oracle创建触发器,若是本地触发,加数据库名即可:如果是远程服务器,做一个db_link操作即可. 教学代码 建表:create table User_ ...

  3. mybatis批量新增和批量更新的效率对比

    今天,为了更多了解下,mybatis批量新增和批量更新在simple/batch模式 + MySQL的rewriteBatchedStatements下效率有什么区别,做了一次实验. 实验结果,让人意 ...

  4. pbcms 文章新增 修改 实现自动百度推送

    pbcms 文章新增 修改 实现自动百度推送 pbcms介绍 功能目标 实现 注意 结语 pbcms介绍 PbootCMS是全新内核且永久开源免费的PHP企业网站开发建设管理系统,是一套高效.简洁. ...

  5. 数据库新增修改和删除

    数据库新增修改和删除 想必在现行的世界中数据很是重要,数据数据.做it这一行得首先我首先想到的就是数据库–SQL Server 2014 Management Studio 一个很实用的处理数据的软件 ...

  6. delphi百度人脸搜索(支持人脸搜索、人脸库新增修改删除查询)

    下载链接:https://download.csdn.net/download/liushenglin123/12550077 [delphi百度人脸搜索]支持人脸搜索.人脸库新增修改删除查询

  7. 公众平台新增修改文章错别字功能 每篇文章允许被修改一次仅限正文内五个字...

    微信团队又深夜放大招了:公众平台新增修改文章错别字功能,支持运营者对已群发文章进行小范围修改.每篇文章允许被修改一次,修改范围仅限正文内五个字.这样确实给运营者.读者提供更友好的编辑.阅读体验了.网友 ...

  8. sharepoint 2016 学习系列篇(14)-自定义列表应用篇-(3)列表数据的新增,修改,删除操作

    前面添加完列表的字段之后,接下来介绍列表数据的新增,修改,删除操作,不需要开发,就能实现数据的新增,修改,删除等操作. 重新返回到列表的http://192.168.1.73:7003/Lists/U ...

  9. 舱位等级新增修改总结

    1.编辑新增/修改的保存的方法 (1)获取舱位代码变量 (2)获取舱位等级名称变量 (3)获取基础价格变量 (4)获取折扣变量 (5)用if语句判断(1)(2)(3)(4)获取的变量不能为空和null ...

  10. 关于@Transactional(readOnly = false)注解,数据新增修改Connection is read-only

    关于@Transactional(readOnly = false)注解,数据新增修改Connection is read-only 有时你新增或修改会报Connection is read-only ...

最新文章

  1. populate_dir
  2. sklearn使用pipeline、ParameterGrid以及GridSearchCV进行超参数调优
  3. mariadb(mysql)的安装
  4. mysql 5.5 barracuda_MySQL Antelope和Barracuda的区别分析
  5. 临时变量不能作为非const引用
  6. java切换jdk版本_切换JDK版本quick
  7. 2020年国内电影总票房突破100亿元
  8. HDU 4417 划分树写法
  9. XLSTransformer导出多sheet页
  10. python function terminated_评论第2页 – Calibre 转换 TXT 文件出现 Errno 21 错误的解决方法 – 书伴...
  11. 什么是SYN包 以及SYN攻击原理
  12. 《如何写好科研论文》
  13. java 实现word文档合并(支持文档中有图片和表格)
  14. 王左中右致出版商的信件稿
  15. Js上传图片到七牛云(直接上代码)
  16. QT安装段错误segmentation fault
  17. select语句的逻辑执行顺序,你知道吗?
  18. c语言程序设计 计算机2级,计算机二级c语言程序设计考试试题
  19. 特斯拉新款Model Y曝光 续航仅449公里
  20. c蔚语言艺术,伊能静的语言艺术,写下老公和好友章子怡,网友称赞

热门文章

  1. 前端学习(1637):前端系列实战课程之调试问题和规范
  2. spring mvc学习(1):spring jar包
  3. 第六十二期:看完这篇还不了解Nginx,那我就哭了!
  4. 第五十三期:公司如何选择数据库?DynamoDB、Hadoop和MongoDB 大比拼
  5. java学习(11):Java数据类型转换
  6. centos7 安装cacti
  7. linux代码工具tag,gcov-dump原理分析_Linux平台代码覆盖率测试
  8. js二进制流转Blob对象。Blob对象再转File对象
  9. 微信小程序知识点GET
  10. python3 readexcel pandas问题,使用python中的pandas中的read_excel函数将日期保留为字符串...