SpringBoot+Fluent-Mybatis 1.9.3入门demo


初识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",                                                                                           // 设置entity类生成src目录, 相对于 user.dir
            basePack = "com.example.dd.task.dd_task",// 设置entity类的package值
            daoDir = "src/main/java",
            tables = {@Table(value = {"duty_task"})}// 设置dao接口和实现的src目录, 相对于 user.dir
    )

    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;

/**
 * @author dk
 * @version 1.0.0
 * @ClassName FluentMybatisConfig.java
 * @Description TODO
 * @createTime 2021年12月14日 15:24:00
 */
@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;

/**
 * DutyTaskDao: 数据操作接口
 *
 * 这只是一个减少手工创建的模板文件
 * 可以任意添加方法和实现, 更改作者和重定义类名
 * <p/>@author Powered By Fluent Mybatis
 */
@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;

/**
 * DutyTaskDao: 数据操作接口
 *
 * 这只是一个减少手工创建的模板文件
 * 可以任意添加方法和实现, 更改作者和重定义类名
 * <p/>@author Powered By Fluent Mybatis
 */
@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;

/**
 * @author dk
 * @version 1.0.0
 * @ClassName DutyTaskController.java
 * @Description TODO
 * @createTime 2021年12月14日 17:42:00
 * 一般建议在实现层使用dao中的方法 进行数据处理
 */
@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.find(sdf.format(a));
        return  dutyTaskDao.findDutyTask(sdf.format(a));
    }

}

总结

提示:这里对文章进行总结:
以上就是今天要讲的内容,本文仅仅简单介绍了fluent_mybatis的使用,以及在创建项目的过程中所遇到的小问题。再次提醒依赖之间的兼容性一定要注意!!!一定要注意!!!一定要注意!!!(重要的事说三遍)

  • 24
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

邪恶小白凸

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值