初识Fluent MyBatis
Fluent MyBatis是一个 MyBatis 的增强工具,他只做了mybatis的语法糖封装,没有对mybatis做任何修改。 通过编译手段,提供了一系列辅助类来帮助开发简化开发、提高效率。。
fluent-mybatus官网
一、新建SpringBoot项目
引入依赖
<!-- 引入fluent-mybatis 运行依赖包, scope为compile -->
<dependency>
<groupId>com.github.atool</groupId>
<artifactId>fluent-mybatis</artifactId>
<version>1.9.3</version>
</dependency>
<!-- 引入fluent-mybatis-processor, scope设置为provider 编译需要,运行时不需要 -->
<dependency>
<groupId>com.github.atool</groupId>
<artifactId>fluent-mybatis-processor</artifactId>
<version>1.9.3</version>
</dependency>
** 注意:springboot项目中springboot的版本需要以其他依赖对应,即版本需要相互兼容。例如我springboot是使用的 2.4.2。那么mybatis的版本我使用的是2.2.0。在此之前我的mybatis版本使用的是1.2.0,在启动项目的时候总是报错,最后才发现是版本太低的原因造成的。所以各位亲爱的小伙伴 一定要仔细检查,注意版本的兼容问题。
报错日志:
二、使用步骤
1.创建测试表
代码如下(示例):
CREATE TABLE `duty_task` (
`id` int(10) NOT NULL,
`dd_user_id` varchar(64) DEFAULT NULL COMMENT '优思班测试钉钉id',
`user_name` varchar(64) DEFAULT NULL COMMENT '姓名',
`task_date` varchar(64) DEFAULT NULL COMMENT '值日时间',
`is_enable` int(4) DEFAULT NULL COMMENT '是否启用',
`creat_time` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2.配置yml文件
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/dd_tool?&allowMultiQueries=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: root
server:
port: 8081
3.编写自动生成entity与dao层的代码
我是直接写在测试类中的
代码如下(示例):
package com.example.dd.task.dd_task;
import cn.org.atool.generator.FileGenerator;
import cn.org.atool.generator.annotation.Table;
import cn.org.atool.generator.annotation.Tables;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class DdTaskApplicationTests {
static final String url = "jdbc:mysql://127.0.0.1:3306/dd_tool?serverTimezone=GMT%2B8&characterEncoding=utf8&useAffectedRows=true&autoReconnect=true";
static final String username = "root";
static final String password = "root";
@Test
void contextLoads() {
FileGenerator.build(Empty.class);
}
@Tables(
url = url, username = username, password = password,
srcDir = "src/main/java",
basePack = "com.example.dd.task.dd_task",
daoDir = "src/main/java",
tables = {@Table(value = {"duty_task"})}
)
static class Empty {
}
}
建议srcDir和daoDir和我配置的一样,basePack中的路径是自己类的路径。运行@Test 后生成了如下的文件。
## 4.处理DutyTaskDaoImpl 报错 查看DutyTaskDaoImpl.class文件的时候 会发现会报错,这时候我们需要对该项目进行build-->Rebuild-Project
5、查看target中生成的包
按照图片所示查看,发现有这三个包 说明项目编译成功
6.配置FluentMybatisConfig
当使用1.9.3 及其之后的版本 需要添加一个config类,FluentMybatisConfig.class
代码如下(示例):
package com.example.dd.task.dd_task.config;
import cn.org.atool.fluent.mybatis.spring.MapperFactory;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@MapperScan("com.example.dd.task.dd_task.mapper")
@Configuration
public class FluentMybatisConfig {
@Bean
public MapperFactory mapperFactory() {
return new MapperFactory();
}
}
7.使用
1、dao层代码
package com.example.dd.task.dd_task.dao.intf;
import cn.org.atool.fluent.mybatis.base.IBaseDao;
import com.example.dd.task.dd_task.entity.DutyTaskEntity;
import javax.annotation.Resource;
import java.util.List;
@Resource
public interface DutyTaskDao extends IBaseDao<DutyTaskEntity> {
List<DutyTaskEntity> find(String taskDate);
DutyTaskEntity findDutyTask(String taskDate);
}
2、实现层代码
package com.example.dd.task.dd_task.dao.intf;
import cn.org.atool.fluent.mybatis.base.IBaseDao;
import com.example.dd.task.dd_task.entity.DutyTaskEntity;
import javax.annotation.Resource;
import java.util.List;
@Resource
public interface DutyTaskDao extends IBaseDao<DutyTaskEntity> {
List<DutyTaskEntity> find(String taskDate);
DutyTaskEntity findDutyTask(String taskDate);
}
3、控制层代码
package com.example.dd.task.dd_task.controller;
import cn.org.atool.fluent.mybatis.base.IEntity;
import com.example.dd.task.dd_task.dao.intf.DutyTaskDao;
import com.example.dd.task.dd_task.entity.DutyTaskEntity;
import com.example.dd.task.dd_task.mapper.DutyTaskMapper;
import com.example.dd.task.dd_task.wrapper.DutyTaskQuery;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
@RestController
@RequestMapping("/duty")
public class DutyTaskController {
@Autowired
private DutyTaskDao dutyTaskDao;
@RequestMapping("/findduty")
public DutyTaskEntity find(){
Date a=new Date();
System.out.println(a);
String strDateFormat = "yyyy-MM-dd";
SimpleDateFormat sdf=new SimpleDateFormat(strDateFormat);
System.out.println(dutyTaskDao.find(sdf.format(a)));
return dutyTaskDao.findDutyTask(sdf.format(a));
}
}
总结
提示:这里对文章进行总结: 以上就是今天要讲的内容,本文仅仅简单介绍了fluent_mybatis的使用,以及在创建项目的过程中所遇到的小问题。再次提醒依赖之间的兼容性一定要注意!!!一定要注意!!!一定要注意!!!(重要的事说三遍)
|