springboot集成tkmapper及基本使用教程

 更新时间:2022年11月10日 08:32:10   作者:likelong965  
tk.mybatis可以节省程序员的大部分时间,对于程序员来说关于一张表的操作无非就是增删改查,tk.mybatis提供了一些基本操作的SQL语句,比如说按表的主键查询、删除等基本操作,我们接下来就来介绍一些springboot集成tkmapper及基本使用

一. 简介

tkMapper是⼀个MyBatis插件,是在MyBatis的基础上提供了很多工具,让开发变得简单,提高开发效率。

  • 提供了针对单表通用的数据库操作方法
  • 逆向工程(根据数据表生成实体类、mapper接口、映射文件)这里不做介绍

二、集成mybatis&tkmapper

2.1、所需依赖

        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.2.0</version>
        </dependency>

        <dependency>
            <groupId>tk.mybatis</groupId>
            <artifactId>mapper-spring-boot-starter</artifactId>
            <version>2.1.5</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

2.2、配置yml

spring:
  datasource:
      driverClassName: com.mysql.cj.jdbc.Driver
      url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=Asia/Shanghai
      username: root
      password: root

mybatis:
  mapper-locations: classpath:mappers/*Mapper.xml
  type-aliases-package: com.lkl.tkmapper.entity

mybatis主要配置mapper映射文件及实体类别名包配置

image-20220806105312807

2.3、主启动类上加注解扫描

image-20220806105600524

三、基本使用

3.1、创建BaseMapper接口

tkMapper已经完成了对单表的通用操作的封装,封装在Mapper接口和MySqlMapper接口;因此如果我们要完
成对单表的操作,只需自定义Mapper接⼝继承Mapper接口和MySqlMapper接口

创建基础mapper接口继承Mapper接口和MySqlMapper接口以供其他接口直接继承

/**
 * tkmapper的公共接口 供其它接口继承
 *
 * @author likelong
 * @date 2022/8/5
 */
public interface BaseMapper<T> extends Mapper<T>, MySqlMapper<T> {
}

3.2、entity实体层

先看数据库表结构,数据库user表

image-20220806110228542

对应实体类,使用tkmybaist时要给实体类注解,比如说@Table就是表名【类注解】,@Id就是主键,@Column就是列【属性注解】。(符合命名规则则可以省去这些注解,如下实体类)

这里值得注意的是表的列名和类的字段名的对比,比如说我表的字段名是user_name,那么映射成类的字段应该是userName,符合驼峰命名法!

@Data
public class User {

    @Id
    private Integer id;

    private String userName;

    private String password;

    private String address;

    private String phone;

}

3.3、mapper持久层

创建接口直接继承我们的BaseMapper接口即可

public interface UserMapper extends BaseMapper<User> {
}

3.4、service服务层

服务层接口

/**
 * @author likelong
 * @date 2022/8/6
 */
public interface UserService {

    User getById(int id);

    List<User> list();
}

服务层实现类,UserMapper接口此时就具备单表的基本增删改查操作

/**
 * @author likelong
 * @date 2022/8/6
 */
@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserMapper userMapper;

    @Override
    public User getById(int id) {
        return userMapper.selectByPrimaryKey(id);
    }

    @Override
    public List<User> list() {
        return userMapper.selectAll();
    }
}

四、测试

image-20220806112226254

userMapper具备单表的基本增删改查操作(因为所有的接口都继承自Mapper<T>, MySqlMapper<T>,这2个接口中封装好了所有的单表操作,直接调用相关方法即可。),如下:

image-20220806112351084

五、注意:

此时的UserMapper仅具备单表的基本增删改查操作,如若有多表关联操作时,也可以在mapper映射文件中直接编写相关的sql脚本即可(规则同mybatis一致)。

参考资料

springboot集成tkmapper及逆向工程

tkmapper基本使用

示例代码地址

SpringBoot使用tkmapper

1.加载依赖

        <dependency>
            <groupId>tk.mybatis</groupId>
            <artifactId>mapper-spring-boot-starter</artifactId>
            <version>2.1.5</version>
        </dependency>

2.引入逆向工程的插件

引入逆向工程插件的目的是为了省略繁琐的创建各种实体类,映射文件和xml文件等步骤,这些文件在自己创建的过程中很有可能会出现不匹配的情况,所以逆向工程可以很方便完成这些工作。

            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.5</version>
                <configuration>
<!--插件配置文件所在的位置-->
              	<configurationFile>${basedir}/src/main/resources/generator/generatorConfig.xml</configurationFile>
                </configuration>
                <!--在插件中依然需要插入插件所需要的依赖-->
                <dependencies>
                    <dependency>
                        <groupId>mysql</groupId>
                        <artifactId>mysql-connector-java</artifactId>
                        <version>5.1.47</version>
                    </dependency>
                    <dependency>
                        <groupId>tk.mybatis</groupId>
                        <artifactId>mapper</artifactId>
                        <version>4.1.5</version>
                    </dependency>
                </dependencies>
            </plugin>
        </plugins>

3.插件配置文件

具体的设置和注解在下面的程序中都有说明,并且相对的在文件中设置路径的时候,可以对目标包进行复制路径之后粘贴在目标位。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
        PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
        "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
    <!-- 引入数据库连接配置 -->
    <!--<properties resource="jdbc.properties" />-->
    <context id="Mysql" targetRuntime="MyBatis3Simple" defaultModelType="flat">
        <property name="beginningDelimiter" value="`"/>
        <property name="endingDelimiter" value="`"/>
        <!--配置GeneralDAO -->
        <plugin type="tk.mybatis.mapper.generator.MapperPlugin">
            <property name="mappers" value="general.GeneralMapper"/>
        </plugin>
        <!-- 配置数据库连接 -->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/mall?useSSL=false"
                        userId="root"
                        password="123456">
        </jdbcConnection>
        <!-- 配置实体类存放路径 -->
        <javaModelGenerator targetPackage="domain"
                            targetProject="src/main/java"/>
        <!-- 配置 XML 存放路径 -->
        <sqlMapGenerator targetPackage="/" targetProject="src/main/resources/mapper"/>

        <!-- 配置 DAO 存放路径 -->
        <javaClientGenerator targetPackage="mapper" targetProject="src/main/java" type="XMLMAPPER"/>

        <!--配置置需要指定生成的数据库和表,%代表所有表-->
        <table tableName="%">
        </table>
    </context>
</generatorConfiguration>

强调强调强调
逆向工程生成了实体类以及各个参数的set/get方法,但是没有生成实体类的构造方法,一定要自己添加构造方法!!!

4.错误

1.在tkmapper进行逆向工程的时候显示依赖找不到

自己的原因: 因为使用的maven聚合工程,所以在父工程引入了打包插件,即下面的依赖

        <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>标签中的内容全部进行删除,之后将pom文件重新加载。
对于一个问题也是同样的解决方案: 在打包过程中显示找不到main函数

2.提示如下的错误

Mon Mar 08 15:03:09 CST 2021 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.

根据提示中的错误,则需要设置数据库连接地址中的useSSL

"jdbc:mysql://localhost:3306/mall?useSSL=false"

3.修改上述的错误之后,还是生成不了

自己的问题: tkmapper的版本过高,所以将1.4.0的版本降至1.3.5之后,问题解决。

到此这篇关于springboot集成tkmapper及基本使用的文章就介绍到这了,更多相关springboot集成tkmapper内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringCloud之consul服务注册与发现、配置管理、配置持久化方式

    SpringCloud之consul服务注册与发现、配置管理、配置持久化方式

    这篇文章主要介绍了SpringCloud之consul服务注册与发现、配置管理、配置持久化方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-03-03
  • SpringBoot实现图形验证码的操作方法

    SpringBoot实现图形验证码的操作方法

    随着安全性的要求越来越高,目前许多项目中都使用了验证码,验证码也有各种类型,如 图形验证码、短信验证码、邮件验证码、人脸识别等,本文给大家介绍SpringBoot实现图形验证码的方法,感兴趣的朋友跟随小编一起看看吧
    2024-07-07
  • Springboot+Spring Security实现前后端分离登录认证及权限控制的示例代码

    Springboot+Spring Security实现前后端分离登录认证及权限控制的示例代码

    本文主要介绍了Springboot+Spring Security实现前后端分离登录认证及权限控制的示例代码,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • Java 深入探究讲解抽象工厂模式

    Java 深入探究讲解抽象工厂模式

    当系统所提供的工厂所需生产的具体产品并不是一个简单的对象,而是多个位于不同产品等级结构中属于不同类型的具体产品时需要使用抽象工厂模式,抽象工厂模式是所有形式的工厂模式中最为抽象和最具一般性的一种形态
    2022-04-04
  • 在SpringBoot项目中使用JetCache缓存的详细教程

    在SpringBoot项目中使用JetCache缓存的详细教程

    Spring Boot是一个非常流行的Java开发框架,JetCache是一个基于注解的高性能缓存框架,本文将介绍如何在Spring Boot项目中使用JetCache缓存,并提供一个详细案例来说明如何配置和使用JetCache,需要的朋友可以参考下
    2024-06-06
  • Springcloud seata分布式事务实现代码解析

    Springcloud seata分布式事务实现代码解析

    这篇文章主要介绍了Springcloud seata分布式事务实现代码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-12-12
  • Spring 面向切面编程AOP实现详解

    Spring 面向切面编程AOP实现详解

    这篇文章主要介绍了Spring 面向切面编程AOP实现详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • 基于@MapperScan和@ComponentScan的使用区别

    基于@MapperScan和@ComponentScan的使用区别

    这篇文章主要介绍了@MapperScan和@ComponentScan的使用区别,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • 运行时常量池和字符串常量池的区别及说明

    运行时常量池和字符串常量池的区别及说明

    这篇文章主要介绍了运行时常量池和字符串常量池的区别及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • IntelliJ IDEA中代码一键生成方法

    IntelliJ IDEA中代码一键生成方法

    EasyCode 是基于 IntelliJ IDEA 开发的代码生成插件,支持自定义任意模板(Java,html,js,xml),这篇文章主要介绍了IntelliJ IDEA中代码一键生成方法,需要的朋友可以参考下
    2020-02-02

最新评论