mybatis plus 新增,修改
生活随笔
收集整理的這篇文章主要介紹了
mybatis plus 新增,修改
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
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 新增,修改的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 输入法畅想
- 下一篇: django python3.6_Dja