IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> SpringBoot+Fluent-Mybatis 1.9.3入门demo -> 正文阅读

[Java知识库]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的使用,以及在创建项目的过程中所遇到的小问题。再次提醒依赖之间的兼容性一定要注意!!!一定要注意!!!一定要注意!!!(重要的事说三遍)

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-12-16 17:32:20  更:2021-12-16 17:34:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/20 6:25:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码