Java:SpringBoot系列——第七章 整合tkMapper

tkMapper的简单使用与分析 tkMapper(也常称为 MyBatis 通用 Mapper)是一个基于 MyBatis 的工具类库,它通过封装通用的 CRUD 操作,简化了 MyBatis 开发中重复的 XML 映射文件和 SQL 语句编写工作。其核心思想是 “单表操作零 SQL”,让开发者无需手动编写常规的增删改查代码。1. 在我实际的业务代码实现中,使用tkMapper时出现过以下的问题:问题一: 没有使用@Id注解去指明实体类中的主键导致报错,tkMapper 的通用 CRUD 方法(如)本质是通过主键字段。 阅读详情

SpringBoot系列——第七章 整合tkMapper



前言

基于mybatis提供了很多第三方插件,这些插件通常可以帮助我们完成数据操作方法的封装、数据库逆向工程工作的工作

一、在项目开发中DAO的实现问题

为什么需要用到tkMapper

1. 实体类与数据表的关系

实现类与数据表直接存在对应关系,并且是有规律的,因此我们只要指定数据表的结构,就能生成实体类

在这里插入图片描述

2. DAO接口中方法的规律

所有DAO接口中定义的方法也是有一定规律的,不同点就是实体类型的不同

  • UserDAO
public interface UserDAO {
   
    public int insertUser(User user);
    public User queryUserByName(String userName);
}
  • BookDAO
public interface BookDAO {
   
    public int insertBook(Book book);
    public Book queryBookByName(String bookName);
}

把它们相同的部分抽取出来,定义一个通用接口,再它们继承这个接口

public interface GeneralDAO<T> {

    public int insert(T t);
    public T queryByName(String name);
}
  • UserDAo
public interface UserDAO extends GeneralDAO<User>{
}
  • BookDAO
public interface BookDAO extends GeneralDAO<Book>{
}

3. Mapper映射文件的规律

GeneralDAO接口中定义的数据库操作方法使用了泛型,因此无需映射文件;对应UserDAO和BookDAO需要映射文件,所有DAO的相同操作的映射文件也是有规律可循的

  • UserMapper
<insert id="insert">
    insert into users(user_id,username)
    values (#{userId},#{username})
</insert>
@Table
public class User {
	@Id
	@Column("user_id")
	private int userId;
	@Column("username")
	private String username;
}
  • BookMapper
<insert id="insert">
    insert into books(book_id,book_name)
    values (#{bookId},#{bookName})
</insert>
@Table
public class Book {
	@Id
	@Column("book_id")
	private int bookId;
	@Column("book_name")
	private String BookName;
}

二、tkMapper的概述

基于mybatis提供了很多第三方插件,这些插件通常可以帮助我们完成数据操作方法的封装、数据库逆向工程工作的工作

数据库逆向工程:根据数据表生成实体类、映射文件。

常用的第三方插件:

  • MyBatis-plus
  • tkMapper

1. tkMapper的介绍

tkMapper是一个Mybatis插件,是在Mybatis的基础上提供了许多工具,可以帮助我们完成对应数据库的相关操作,提高开发效率。

2. tkMapper的作用

  • 提供了针对表通用的数据库操作方法
  • 逆向工程–根据数据表生成实体类、dao接口、映射文件

三、tkMapper集成部署

1. 基于SpringBoot完成MyBatis的集成

1.1 创建SpringBoot项目
  1. File–New–Project–Spring Initializr
  2. 填写项目信息
  • 远程服务器
  • 项目名
  • 本地JDK与远程服务器下载的应用JDK要保持一致

在这里插入图片描述

  1. 下载应用的配置
  • 下载的SpringBoot版本
  • 添加的依赖

在这里插入图片描述

1.2 配置MyBatis

在SpringBoot配置文件配置mybatis

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/db6?serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=123456


mybatis.mapper-locations=classpath:mappers/*Mapper.xml
mybatis.type-aliases-package=com.xiaoqing.springboottkmapperdemo.beans
1.3 在启动类指定DAO类的路径
@SpringBootApplication
@MapperScan("com.xiaoqing.springboottkmapperdemo.dao")//指定DAO类的路径
public class SpringbootTkmapperDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootTkmapperDemoApplication.class, args);
    }

}

2. SpringBoot集成tkMapper

2.1 添加依赖

在pom.xml中添加依赖

<!-- https://mvnrepository.com/artifact/tk.mybatis/mapper-spring-boot-starter -->
<dependency>
    <groupId>tk.mybatis</groupId>
    <artifactId>mapper-spring-boot-starter</artifactId>
    <version>2.1.5</version>
</dependency>
2.2 修改启动类@MapperScan的包

修改tk.mybatis的包为tk.mybatis.spring.annotation.MapperScan,不修改会报错

在这里插入图片描述
在这里插入图片描述

package com.xiaoqing.springboottkmapperdemo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import tk.mybatis.spring.annotation.MapperScan;

@SpringBootApplication
//@MapperScan("com.xiaoqing.springboottkmapperdemo.dao")
@MapperScan("com.xiaoqing.springboottkmapperdemo.dao")
public class SpringbootTkmapperDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootTkmapperDemoApplication.class, args);
    }
}

至此,tkMapper部署完成

四、tkMapper的使用

1. 创建数据表

创建数据表

  • users
DROP TABLE IF EXISTS `users`;
CREATE TABLE `users` (
  `user_id` int(11) NOT NULL AUTO_INCREMENT,
  `user_name` varchar(20) NOT NULL,
  `user_pwd` varchar(20) NOT NULL,
  `user_realname` varchar(20) NOT NULL,
  `user_img` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8;

2. 创建实体类

tkMapper,在映射的时候,实体类名要与数据库表名保持一致(实体类名为表名首字母大写、带有下划线‘_’的名字,省去下划线,下划线后的第一个首字母大写)

如果表名和实体类名不对应会报错,一共有两种解决方式:

  • 修改实体类名,与表名对应
  • 使用@Table()注解指定表名
@Data
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "users") //指定数据库中的表名
public class User {
    private int userId;
    private String userName;
    private String userPwd;
    private String userRealname;
    private String userImg;
}

3. 创建DAO接口

tkMapper已经完成了对单表的通用操作的封装,主要封装在Mapper接口和MysqlMapper接口中,因此我们如果要完成对单表的操作,只需要自定义dao接口继承这两个接口即可 。

在测试类的时候userdao会报错,提示“找不到userdao”,这里可以忽略(因为是可以获取到的),可以在接口中使用@Repository注解就不会提示错误

  • UserDAO
@Repository
public interface UserDAO extends Mapper<User>, MySqlMapper<User> {
}

4. 创建测试类

4.1 添加依赖
  • junit
  • Spring-test
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <scope>4.13.2</scope>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
</dependency>
4.2 测试类

@RunWith 声明单元测试的驱动

@SpringBootTest 声明启动类的路径

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = SpringbootTkmapperDemoApplication.class)
public class UserDAOTest {
    @Autowired
    private UserDAO userDAO;
    @Test
    public void insert(){
        User user = new User();
        user.setUserName("hong");
        user.setUserPwd("123456");
        user.setUserRealname("小红");
        user.setUserImg("12.png");
        int insert = userDAO.insert(user);
        System.out.println(insert);
    }
}
4.3 测试结果

在这里插入图片描述

五、tkMapper的常用方法

1. 添加操作

添加操作的常用方法有两个:

  • insert() 添加一个对象

  • insertUseGeneratedKeys() 添加一个对象并进行主键回填

    在进行主键回填的时候,实体类中id必须要用@Id指定,并且主键的数据类型改为Integer(通过反射)

1.1 添加一个对象
@Test
public void insert(){

    User user = new User();
    user.setUserName("ming");
    user.setUserPwd("123456");
    user.setUserRealname("小明");
    user.setUserImg("13.png");

    int i = userDAO.insert(user);
    assertEquals(1,i);

}

测试结果:

在这里插入图片描述

1.2 主键回填的添加

在进行主键回填的时候,实体类中id必须要用@Id指定,并且主键的数据类型改为Integer,不然获取不到回填的主键,因为tkMapper底层是通过反射实现的

@Test
public void insertUseGeneratedKeys(){
    User user = new User();
    user.setUserName("xiao");
    user.setUserPwd("888888");
    user.setUserRealname("笑笑");
    user.setUserImg("16.png");

    int i = userDAO.insertUseGeneratedKeys(user);
    assertEquals(1,i);
    System.out.println("回填的主键:" + user.getUserId());
}

在这里插入图片描述

测试结果

在这里插入图片描述

2. 修改操作

修改操作的常用方法:

  • updateByPrimaryKey() 根据主键修改记录
  • updateByExample() 根据条件删除记录
2.1 根据主键修改记录
@Test
public void update(){

    User user = new User();
    user.setUserId(17);
    user.setUserName("pipi");
    user.setUserPwd("666666");
    user.setUserRealname("pipi");
    user.setUserImg("18.png");

    int i = userDAO.updateByPrimaryKey(user);
    assertEquals(1,i);
}
  • 修改前

在这里插入图片描述

  • 修改后

在这里插入图片描述

3. 删除操作

删除操作常用方法:

  • deleteByPrimaryKey() 根据主键删除记录
  • deleteByExample() 根据条件删除记录
3.1 根据主键删除记录
@Test
public void delete(){

    int i = userDAO.deleteByPrimaryKey(17);
    assertEquals(1,i);
}

4. 查询操作

查询操作常用方法:

  • selectAll() 查询所有记录
  • selectByPrimaryKey() 根据主键查询
  • selectByExample() 根据条件查询
  • selectByRowBounds() 分页查询
  • selectCount() 查询总记录数
  • selectByExampleAndRowBounds() 带条件的分页查询
  • selectCountByExample()查询满足条件的总记录数
4.1 查询所有记录
@Test
public void select(){
    List<User> users = userDAO.selectAll();
    for (User user:
         users) {
        System.out.println(user);
    }
}

测试结果:

在这里插入图片描述

4.2 根据主键查询记录
@Test
public void select(){

    User user = userDAO.selectByPrimaryKey(18);
    System.out.println(user);
}

测试结果:

在这里插入图片描述

4.3 根据条件查询

1.查询用户名为xiao和hong的记录

@Test
public void select(){

    //根据条件查询
    //创建一个EXample对象用于封装User的查询条件
    Example example = new Example(User.class);
    Example.Criteria criteria = example.createCriteria();

    //封装条件:userName为xiao或者hong
    criteria.andEqualTo("userName","xiao");
    criteria.orEqualTo("userName","hong");

    List<User> users = userDAO.selectByExample(example);
    for (User user:users) {
    	System.out.println(user);
    }
}

测试结果:

在这里插入图片描述

2.查询用户名带“x”的记录

    @Test
    public void select(){
        //根据条件查询
        //创建一个EXample对象用于封装User的查询条件
        Example example = new Example(User.class);
        Example.Criteria criteria = example.createCriteria();
        //查询用户名带“x”的记录
        criteria.andLike("userName","%x%");

        List<User> users = userDAO.selectByExample(example);
        for (User user:
             users) {
            System.out.println(user);
        }
    }

测试结果:

在这里插入图片描述

4.4 分页查询

查询第二页,每页五条记录,总记录数

@Test
public void select(){
    //分页查询
    int pageNum = 2;
    int pageSize = 5;
    int start = (pageNum - 1) * pageSize;

    RowBounds rowBounds = new RowBounds(start,pageSize);
    List<User> users = userDAO.selectByRowBounds(new User(), rowBounds);
    for (User user:
         users) {
        System.out.println(user);
    }
    //查询总记录数
    int count = userDAO.selectCount(new User());
    System.out.println(count);
}

查询结果

在这里插入图片描述

4.5 带条件的分页查询

查询密码为123456的第二页,每页五条记录,满足条件的总记录数

@Test
public void select2(){
    //条件
    Example example = new Example(User.class);
    Example.Criteria criteria = example.createCriteria();
    criteria.andEqualTo("userPwd","123456");

    //分页查询
    int pageNum = 2;//第几页
    int pageSize = 5;//每页的条数
    int start = (pageNum - 1) * pageSize;
    RowBounds rowBounds = new RowBounds(start,pageSize);

    List<User> users = userDAO.selectByExampleAndRowBounds(example, rowBounds);
    for (User user:
            users) {
        System.out.println(user);
    }
    //查询满足条件的总记录数
    int count = userDAO.selectCountByExample(example);
    System.out.println(count);
}

查询结果:

在这里插入图片描述

六、tkMapper的关联查询

关联查询有两种策略:

  • 进行多次单表查询
  • 自定义查询

1. 多次单表查询

查询用户同时查询订单

①在User实体类private List orderList属性

②根据用户名查询出用户记录

③获取到用户记录的userId

④再根据userId去订单表查询符合条件订单记录

⑤最后将订单列表设置到用户orderList属性

@Test
public void select3(){
    //查询用户的同时查询订单

    //根据用户名查询用户
    Example example = new Example(User.class);
    Example.Criteria criteria = example.createCriteria();
    criteria.andEqualTo("userName","zhangsan");

    List<User> users = userDAO.selectByExample(example);
    User user = users.get(0);

    //根据用户id查询订单
    Example example1 = new Example(Order.class);
    Example.Criteria criteria1 = example1.createCriteria();
    criteria1.andEqualTo("userId",user.getUserId());
    List<Order> orders = orderDAO.selectByExample(example1);

    //将顶顶设置到user中
    user.setOrderList(orders);
    System.out.println(user);
}

查询结果:

在这里插入图片描述

2. 自定义查询

自定义查询是UserMapper.xml文件查询。

七、基于tkMapper的逆向工程

逆向工程,就是根据创建好的数据表,生成实体类、dao、映射文件

1. 添加逆向工程依赖

此依赖是一个mybatis的maven插件,在build标签里添加

<plugin>
    <groupId>org.mybatis.generator</groupId>
    <artifactId>mybatis-generator-maven-plugin</artifactId>
    <version>1.3.5</version>

    <!--插件需要的依赖-->
    <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>

2. 逆向工程配置

在com/xiaoqing/general目录下创建GeneralDao接口

注意:‘GeneralDao’,不能在dao包里

package general;

import tk.mybatis.mapper.common.Mapper;
import tk.mybatis.mapper.common.MySqlMapper;

public interface GeneralDao<T> extends Mapper<T>, MySqlMapper<T> {
}

在resources目录下创建generatorConfig.xml,在里面定义了需要生成的表,以及生成文件的路径等信息

<?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="com.xiaoqing.general.GeneralDao"/>
        </plugin>

        <!-- 配置数据库连接 -->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/fmmail"
                        userId="root" password="123456">
        </jdbcConnection>

        <!-- 配置实体类存放路径 -->
        <javaModelGenerator targetPackage="com.xiaoqing.springboottkmapperdemo.beans" targetProject="src/main/java"/>

        <!-- 配置 XML 存放路径 -->
        <sqlMapGenerator targetPackage="/" targetProject="src/main/resources/mappers"/>

        <!-- 配置 DAO 存放路径 -->
        <javaClientGenerator targetPackage="com.xiaoqing.springboottkmapperdemo.dao" targetProject="src/main/java" type="XMLMAPPER"/>

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

3. 将配置文件设置到maven插件中

pom.xml

在这里插入图片描述

<configuration>
    <configurationFile>${basedir}/src/main/resources/generatorConfig.xml</configurationFile>
</configuration>

4. 执行逆向生成

双击mybatis:generator:generate

在这里插入图片描述

出现BUILD SUCCESS则逆向成功

在这里插入图片描述

通过逆向生成的实体类、DAO和mapper

在这里插入图片描述

在这里插入图片描述

Flutter加载本地HTML的优雅解决方案:轻松实现富文本展示 通过以上步骤,我们实现了Flutter加载本地HTML的完整流程,并简单介绍了如何通过WebView与HTML页面进行交互。HTML文件作为一种灵活、易维护的富文本展示方式,能有效提升Flutter应用的内容呈现能力。这种方法在展示新闻、资讯或帮助文档等内容时非常有用,能够让开发者灵活调整内容的样式和排版。希望这篇文章能对你在Flutter开发中的HTML加载有所帮助! 阅读详情

相关推荐

SPWM波调制度原理

SPWM波调制度原理

qq_43557686的博客 1万+

tkMapper的使用-超详细

tkMapper已经完成了对单表的通用操作的封装,主要封装在Mapper接口和MysqlMapper接口中,因此我们如果要完成对单表的操作,只需要自定义dao接口继承这两个接口即可。增加方法在准备工作中已经完成,如果想了解此部分内容,可以向上进行查看,此处主要是添加功能的另一种实现------------主键回填。注意在进行主键回填的时候,实体类中id必须要用@Id指定一下,要不然映射的时候找不到id;过程如下创建一个users对象,对象的id是需要修改的用户的id,其他信息是需要更改后的信息。...

WuHuaSen的博客 7386

CI.zip_CI matlab_ci_ci-ofdm_covariance_zip

covariance intersection algorithm

tkMapper

tkMapper

Joyechen1的博客 921

SpringBoot集成Mybatis插件tkMapper的使用

SpringBoot+SpringMVC+Mybatis+tkMapper的使用

lidasha_521的博客 1080

tk.mapper框架使用

tk.mapper框架使用

小何的博客 1433

Springboot整合TKMapper

Springboot整合TKMapper 使用TKMapper无需再创建mapper.xml文件 首先基于springboot完成对MyBatis整合,然后再对TKMapper进行整合 1 创建springboot项目 勾选必要的依赖 整合mybatis 引入了mybatis的依赖,就需要配置数据库,创建 application.yml文件 spring: datasource: url: jdbc:mysql://192.168.1.2:3306/learn_tkmapper?serve

龙山大佛爷的博客 615

springboot搭建后台框架 (一)整合tkMapper

springboot整合tkMapper 想着每次搭建新项目时框架都要从新搭建,基本常用的也就哪几种,现在就来搭建一种常用的springboot后台框架,以后新开小项目可以直接拿来使用 项目整体结构图 2.新建springboot空白项目,选中web依赖(略) 3.pom文件依赖项展示 <?xml version="1.0" encoding="UTF-8"?> <proj...

醉鱼的博客 1556

springboot2.整合tkmapper入门

  使用springboot构建一个工程   第一步:pom文件引入tkmapper依赖 这里只需要引入tkmapper的依赖就可以,tkmapper帮我们 &lt;!-- 通用Mapper插件文档地址:https://gitee.com/free/Mapper/wikis/Home --&gt; &lt;dependency&gt; &l...

qq_38006343的博客 2186

springboot整合springmvc,mybatistkmapper,pagehelper

1. spring boot工作原理 1.1 spring框架优缺点分析 优点 SpringJava企业版(Java Enterprise Edition,JEE,也称J2EE)的轻量级代替品。无需开发重量级的Enterprise JavaBean(EJB),Spring为企业级Java开发提供了一种相对简单的方法,通过依赖注入和面向切面编程,用简单的Java对象(Plain Old Jav...

le6peer的博客 383

javatkmapper分组查询_springboot2.x整合tkmapper的示例代码

springboot整合tkmapper1.导入pom依赖1.1 导入springboot的parent依赖spring-boot-starter-parentorg.springframework.boot2.1.9.RELEASE1.2 导入具体依赖org.springframework.bootspring-boot-starter-weborg.springframework.bootsp...

weixin_34252946的博客 308

springboot2.x整个tkMapper @MapperScan扫描失效

前言 springboot2.1.9整合tkMapper。不是第一次整合了。上一次整合,就没出现这个问题。 这一次,就出来了。配置完全一样,依赖也一样。 之所以说无效,是在启动类上加了tkMapper的@MapperScan注解,但是扫描不到dao层的Mapper文件。 如果是这样写: /** * 创建时间: 2019/11/23 ,文件由 Mybatis Generator 生成 */ @M...

Meditation_Crazy 2735

TkMapper(通用mapper)

TkMapper的配置及使用   TkMapper主要是做单标查询,复杂的多表查询我们还得自己写sql。 使用的是Springboot框架 使用的数据库表ums_permision: id pid name value icon type uri status create_time sort 1 0 商品 null null 0 null 1 2018-09-29 16:...

smileKutper的博客 7325

SpringBoot使用tkmapper

1.加载依赖 <dependency> <groupId>tk.mybatis</groupId> <artifactId>mapper-spring-boot-starter</artifactId> <version>2.1.5</version> </dependency> 2.引入逆向工程的插件 引入

y13698742的博客 1669

SpringBoot中自定义tkMapper

前言 在[上一篇文章](https://blog.csdn.net/Kube_/article/details/105496180)中我们已经使用了tkMapper插件,集成了一些自动生成的代码,已经能够满足大部分的增删改查,但还是有些操作,比如模糊查询,批量更新等操作不支持,这时我们就需要自己实现,如果这些代码很常用,我们可以做成通用的。 ...

Kube_的博客 730

Springboot +TkMapper +generator 搭建

一、开场白 许多小伙伴,搭建一个mybatisjavaWeb项目是不是网上的类型很多啊,或者说只是搭建一部分,那都是浪费时间,我今天给大家搭建的这个项目是很方便的: 1. 采用mybatis作为交互层 2. 用到了tkMapper的方便性 3. 还加入了generator进行mapper,xml,model的生成 4. mapper和xml在同一目录,方便管理 二、实际开发 1. 我们先搭建一个springboot的项目,这个就不...

qq_37497275的博客 550

SpringBoot集成TkMapper

springboot集成TkMapper 简化持久层法人代码熟悉,提高开发效率; 先给大家截个图看一下效果 这就是效果!! 是不是感觉很爽。(TkMapper对单表的操作很方便的) 下来我们进入正题, 第一步:Pom 文件中加载 jar 文件 &lt;dependency&gt; &lt;groupId&gt;tk.mybatis&lt;/groupId&gt; &lt;ar...

刘信晨 7973

Springboot整合tkMapper

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

weixin_48319193的博客 1007

springboot + tkmapper

基本 基于mybaits的数据源配置 导包 <!-- tkmapper --> <dependency> <groupId>tk.mybatis</groupId> <artifactId>mapper-spring-boot-starter</artifactId> <version>2.0...

qq_36382225的博客 243

tkMapper 简记

tkMapper 实现基本CRUD操作以及分页查询和联表查询方法目录1. tkMapper2. tkMapper 简介3. tkMapper 整合4. tkMapper 使用5. tkMapper 提供的方法 目录 1. tkMapper 基于 Mybatis 提供了很多第三方插件,通常可以完成通过数据方法的封装,数据库逆向工程的工作(根据数据表生成实体类、生成映射文件) Mybatis-plus tkMapper 2. tkMapper 简介 tkMapper 是一个 Mybatis 插件,是在

Beyond的博客 1084
上一篇: Java:URL设计规范——RESTful
下一篇: Java:项目开发系列——第一章 用户登录功能
Julissa.
博客等级 码龄7年 15粉丝 70原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值