Fluent Mybatis讓你擺脫Xml文件的技巧
一、啥是Fluent-Mybatis
與Mybatis-Plus類似,是對Mybaits進一步的封裝,使之語法簡潔明了,更重要的是不需要在自主創(chuàng)建Xml文件,可以只用一個實體類對象,通過代碼生成器,在編譯的過程中生成所需要的各類文件,簡化了項目的基礎構(gòu)建,提高開發(fā)效率。

二、SpringBoot + Fluent-Mybatis
1、創(chuàng)建數(shù)據(jù)庫測試表
DROP TABLE IF EXISTS `t_user`;
create table `t_user`
(
id bigint auto_increment comment '主鍵ID' primary key,
name varchar(30) charset utf8 null comment '姓名',
age int null comment '年齡',
email varchar(50) charset utf8 null comment '郵箱',
gmt_create datetime null comment '記錄創(chuàng)建時間',
gmt_modified datetime null comment '記錄最后修改時間',
is_deleted tinyint(2) default 0 null comment '邏輯刪除標識'
);
2、創(chuàng)建一個Springboot項目,pom文件如下
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.1.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.mybatis.fluent</groupId>
<artifactId>fluent_mybatis</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>fluent_mybatis</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<fluent.mybatis.version>1.5.6</fluent.mybatis.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<!--JDBC驅(qū)動-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!--Mybatis-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.0.1</version>
</dependency>
<!-- fluent mybatis依賴-->
<dependency>
<groupId>com.github.atool</groupId>
<artifactId>fluent-mybatis</artifactId>
<version>${fluent.mybatis.version}</version>
</dependency>
<dependency>
<groupId>com.github.atool</groupId>
<artifactId>fluent-mybatis-processor</artifactId>
<version>${fluent.mybatis.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</project>
3、代碼生成器
import cn.org.atool.generator.FileGenerator;
import cn.org.atool.generator.annotation.Table;
import cn.org.atool.generator.annotation.Tables;
public class AppEntityGenerator {
public static void main(String[] args) {
FileGenerator.build(Abc.class);
}
@Tables(
/** 數(shù)據(jù)庫連接信息 **/
url = "jdbc:mysql://IP:3306/test?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai",
username = "XXXXXX",
password = "XXXXXX",
/** Entity類parent package路徑 **/
basePack = "com.mybatis.fluent.fluent_mybatis",
/** Entity代碼源目錄 **/
srcDir = "/src/main/java",
/** Dao代碼源目錄 **/
daoDir = "/src/main/java",
/** 如果表定義記錄創(chuàng)建,記錄修改,邏輯刪除字段 **/
gmtCreated = "gmt_create", gmtModified = "gmt_modified", logicDeleted = "is_deleted",
/** 需要生成文件的表 **/
tables = @Table(value = {"t_user"})
)
static class Abc {
}
}
需要注意,默認的是MySQL數(shù)據(jù)庫,如果需要其他數(shù)據(jù)庫,需要手動配置dbType和driver,其他選項按照需要修改。例如oralce
import cn.org.atool.generator.FileGenerator;
import cn.org.atool.generator.annotation.Table;
import cn.org.atool.generator.annotation.Tables;
import cn.org.atool.generator.database.DbType;
public class AppEntityGenerator {
public static void main(String[] args) {
FileGenerator.build(Abc.class);
}
@Tables(
/** 數(shù)據(jù)庫連接信息 **/
dbType= DbType.ORACLE,
driver= "oracle.jdbc.OracleDriver",
url = "jdbc:oracle:thin:@IP:1521:orcl",
username = "XXXXXX",
password = "XXXXXX",
/** Entity類parent package路徑 **/
basePack = "com.mybatis.fluent.fluent_mybatis",
/** Entity代碼源目錄 **/
srcDir = "/src/main/java",
/** Dao代碼源目錄 **/
daoDir = "/src/main/java",
/** 如果表定義記錄創(chuàng)建,記錄修改,邏輯刪除字段 **/
gmtCreated = "INSERT_DATE_TIME",
/** 需要生成文件的表 **/
tables = @Table(value = {"table_name"})
)
static class Abc {
}
}
main方法啟動執(zhí)行,生成的項目結(jié)構(gòu),如果在執(zhí)行是出現(xiàn)異常

需要暫時注釋

當生成好對應文件,項目目錄如下

此時TUserDaoImpl會有錯誤

此時將需要將之前注釋的provided打開,在執(zhí)行

執(zhí)行過后,異常消除。此時你就擁有的對數(shù)據(jù)庫此表的強大操作能力。
4、測試CURD
import cn.org.atool.fluent.mybatis.model.IPagedList;
import cn.org.atool.fluent.mybatis.model.StdPagedList;
import com.mybatis.fluent.fluent_mybatis.dao.impl.HospitalinfoDaoImpl;
import com.mybatis.fluent.fluent_mybatis.dao.impl.TUserDaoImpl;
import com.mybatis.fluent.fluent_mybatis.entity.HospitalinfoEntity;
import com.mybatis.fluent.fluent_mybatis.entity.TUserEntity;
import com.mybatis.fluent.fluent_mybatis.helper.TUserWrapperHelper;
import com.mybatis.fluent.fluent_mybatis.wrapper.HospitalinfoQuery;
import com.mybatis.fluent.fluent_mybatis.wrapper.TUserQuery;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import javax.annotation.Resource;
import java.io.Serializable;
import java.util.List;
@SpringBootTest
class FluentMybatisApplicationTests {
@Resource
private TUserDaoImpl dao;
@Test
void add() {
TUserEntity entity = new TUserEntity().setAge(20).setEmail("122@163.com").setName("lisi").setIsDeleted(false);
Serializable id = dao.save(entity);
System.out.println("插入后返回的主鍵ID為:" + id);
}
@Test
void select(){
/**
* 分頁查詢構(gòu)造條件
*/
TUserQuery query = TUserQuery.query().limit(0,1);
List<TUserEntity> list = dao.listEntity(query);
System.out.println(list);
}
@Test
void upData(){
TUserEntity entity = dao.selectById(1L);
System.out.println(entity);
entity.setAge(2000).setEmail("120098922@qq.com").setName("lisi111").setIsDeleted(true);
System.out.println(entity);
boolean b = dao.updateById(entity);
System.out.println(b);
}
@Test
void delete(){
boolean b = dao.deleteById(1L);
System.out.println(b);
TUserQuery query = TUserQuery.query();
List<TUserEntity> list = dao.listEntity(query);
System.out.println(list);
}
}
三、官方鏈接
官方網(wǎng)站提供了完整切詳細的構(gòu)建和使用的文檔,本文的內(nèi)容僅為學習練習的Demo
到此這篇關于Fluent Mybatis讓你擺脫Xml文件的技巧的文章就介紹到這了,更多相關Fluent Mybatis Xml文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
- springboot 整合fluent mybatis的過程,看這篇夠了
- Fluent MyBatis實現(xiàn)動態(tài)SQL
- Fluent Mybatis快速入門詳細教程
- Fluent Mybatis零xml配置實現(xiàn)復雜嵌套查詢
- Fluent Mybatis如何做到代碼邏輯和sql邏輯的合一
- FluentMybatis實現(xiàn)mybatis動態(tài)sql拼裝和fluent api語法
- Fluent Mybatis實際開發(fā)中的優(yōu)勢對比
- Fluent Mybatis,原生Mybatis,Mybatis Plus三者功能對比
- Fluent Mybatis 批量更新的使用
相關文章
詳解Spring-Boot集成Spring session并存入redis
這篇文章主要介紹了詳解Spring-Boot集成Spring session并存入redis,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-05-05
SpringBoot后端數(shù)據(jù)校驗實戰(zhàn)操作指南
在項?開發(fā)中,對于前端提交的表單,后臺接?接收到表單數(shù)據(jù)后,為了保證程序的嚴謹性,通常后端會加?業(yè)務參數(shù)的合法校驗操作來避免程序的?技術性?bug,這篇文章主要給大家介紹了關于SpringBoot后端數(shù)據(jù)校驗的相關資料,需要的朋友可以參考下2022-07-07
Spring Boot企業(yè)常用的starter示例詳解
這篇文章主要給大家介紹了關于Spring Boot企業(yè)常用starter的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Spring Boot具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧2019-12-12

