tkMapper

  • tkMapper整合
    • 整合mybatis
      • 依赖
      • 配置类
      • 启动类扫描
    • 整合tkMapper
      • 依赖
      • 修改启动类的`@MapperScan`注解的包
  • tkMapper使用
    • 创建数据表
    • 创建实体类
    • 创建Mapper接口
    • 测试
  • tkMapper的常用方法
    • 增删改
      • 添加
      • 修改
      • 删除
    • 查询
      • 查询所有
      • 根据主键查询
      • 条件查询
      • 分页查询
      • 带条件分页查询
    • 关联查询
  • 逆向工程
    • 添加逆向工程依赖

基于MyBatis提供了很多第三方插件,这些插件通常可以完成数据操作方法的封装(GeneralDAO)、数据库逆向工程工作(根据数据表生成实体类、生成映射文件)

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

  • 提供了针对单表通用的数据库操作方法

  • 逆向工程(根据数据表生成实体类、dao接口、映射文件)

tkMapper整合

整合mybatis

依赖

     <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.20</version></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.2.0</version></dependency>

配置类

server:port: 8080servlet:context-path: /#连接数据库的信息
spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/fmmall?serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8username: rootpassword: 123456mybatis:#  扫描映射文件mapper-locations: classpath:mapper/*.xml#  配置别名扫描的包type-aliases-package: com.blb.entityconfiguration:#   开启驼峰映射配置map-underscore-to-camel-case: true

启动类扫描

@SpringBootApplication
@MapperScan("com.blb.mapper")
public class TkmapperApplication {public static void main(String[] args) {SpringApplication.run(TkmapperApplication.class, args);}}

整合tkMapper

依赖

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

修改启动类的@MapperScan注解的包

  • tk.mybatis.spring.annotation.MapperScan
package com.blb;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import tk.mybatis.spring.annotation.MapperScan;@SpringBootApplication
@MapperScan("com.blb.mapper")
public class TkmapperApplication {public static void main(String[] args) {SpringApplication.run(TkmapperApplication.class, args);}}

tkMapper使用

创建数据表

CREATE TABLE `users`  (`user_id` int(64) NOT NULL AUTO_INCREMENT COMMENT '主键id 用户id',`username` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '用户名 用户名',`password` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '密码 密码',`nickname` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '昵称 昵称',`realname` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '真实姓名 真实姓名',`user_img` varchar(1024) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '头像 头像',`user_mobile` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '手机号 手机号',`user_email` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '邮箱地址 邮箱地址',`user_sex` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '性别 M(男) or F(女)',`user_birth` date NULL DEFAULT NULL COMMENT '生日 生日',`user_regtime` datetime(0) NOT NULL COMMENT '注册时间 创建时间',`user_modtime` datetime(0) NOT NULL COMMENT '更新时间 更新时间',PRIMARY KEY (`user_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '用户 ' ROW_FORMAT = Compact;

创建实体类

@Data
@NoArgsConstructor
@AllArgsConstructor@Table(name="users")// 表名和数据库名不一致无法映射
public class User {private int userId;private String username;private String password;private String nickname;private String realname;private String userImg;private String userMobile;private String userEmail;private String userSex;private Date userBirth;private Date userRegtime;private Date userModtime;}

创建Mapper接口

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

package com.blb.mapper;import com.blb.entity.User;
import tk.mybatis.mapper.common.Mapper;
import tk.mybatis.mapper.common.MySqlMapper;public interface UserMapper extends Mapper<User>, MySqlMapper<User> {}

测试

@SpringBootTest
class TkmapperApplicationTests {@Autowiredprivate UserMapper userMapper;@Testvoid testInsert() {User user=new User();user.setUsername("aaaa");user.setPassword("1111");user.setUserImg("img/default.png");user.setUserRegtime(new Date());user.setUserModtime(new Date());int insert = userMapper.insert(user);System.out.println(insert);}}

tkMapper的常用方法

package com.blb.entity;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;import javax.persistence.Column;
import javax.persistence.Id;@Data
@NoArgsConstructor
@AllArgsConstructor
public class Category {@Idprivate Integer categoryId;private String categoryName;private Integer categoryLevel;private Integer parentId;private String categoryIcon;private String categorySlogan;private String categoryPic;private String categoryBgColor;}
package com.blb.mapper;import com.blb.entity.Category;
import tk.mybatis.mapper.common.Mapper;
import tk.mybatis.mapper.common.MySqlMapper;public interface CategoryMapper extends Mapper<Category>, MySqlMapper<Category> {}

增删改

添加

Category category = new Category(0,"测试类别3",1,0,"03.png","xixi","aaa.jpg","black");//int i = categoryMapper.insert(category);int i = categoryMapper.insertUseGeneratedKeys(category);System.out.println(category.getCategoryId());assertEquals(1,i);

注意如果要主键回填一定要在对应的实体类的主键上添加@Id

修改

Category category = new Category(48,"测试类别4",1,0,"04.png","heihei","aaa.jpg","black");int i = categoryDAO.updateByPrimaryKey(category);// 根据自定义条件修改,Example example就是封装条件的// int i1 = categoryDAO.updateByExample( Example example);assertEquals(1,i);

删除

  int i = categoryDAO.deleteByPrimaryKey(48);// 根据条件删除//int i1 = categoryDAO.deleteByExample(Example example);assertEquals(1,i);

查询

查询所有

 //查询所有List<Category> categories = categoryDAO.selectAll();for (Category category: categories) {System.out.println(category);}

根据主键查询

//根据主键查询Category category = categoryDAO.selectByPrimaryKey(47);System.out.println(category);

条件查询

//条件查询//1.创建一个Example封装 类别Category查询条件Example example = new Example(Category.class);Example.Criteria criteria = example.createCriteria();criteria.andEqualTo("categoryLevel",1);criteria.orLike("categoryName","%干%");List<Category> categories = categoryDAO.selectByExample(example);for (Category category: categories) {System.out.println(category);}

分页查询

//分页查询int pageNum = 2;int pageSize = 10;int start = (pageNum-1)*pageSize;RowBounds rowBounds = new RowBounds(start,pageSize);List<Category> categories = categoryDAO.selectByRowBounds(new Category(), rowBounds);for (Category category: categories) {System.out.println(category);}//查询总记录数int i = categoryDAO.selectCount(new Category());System.out.println(i);

带条件分页查询

//带条件分页//条件Example example = new Example(Category.class);Example.Criteria criteria = example.createCriteria();criteria.andEqualTo("categoryLevel",1);//分页int pageNum = 2;int pageSize = 3;int start = (pageNum-1)*pageSize;RowBounds rowBounds = new RowBounds(start,pageSize);List<Category> categories = categoryDAO.selectByExampleAndRowBounds(example,rowBounds);for (Category category: categories) {System.out.println(category);}//查询总记录数(满足条件)int i = categoryDAO.selectCountByExample(example);System.out.println(i);

关联查询

就想原来一样在接口里写方法,写mybatis的xml即可

逆向工程

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

添加逆向工程依赖

<build><plugins><plugin><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-maven-plugin</artifactId><version>1.3.7</version><dependencies><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.20</version></dependency><dependency><groupId>tk.mybatis</groupId><artifactId>mapper</artifactId><version>4.1.5</version></dependency></dependencies></plugin><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>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfigurationPUBLIC "-//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.blb.general.GeneralMapper"/></plugin><!-- 配置数据库连接 --><jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"connectionURL="jdbc:mysql://localhost:3306/fmmall?serverTimezone=UTC&amp;useUnicode=true&amp;characterEncoding=UTF-8"userId="root" password="123456"></jdbcConnection><!-- 配置实体类存放路径 --><javaModelGenerator targetPackage="com.blb.entity" targetProject="src/main/java"/><!-- 配置 XML 存放路径 --><sqlMapGenerator targetPackage="/" targetProject="src/main/resources/mapper"/><!-- 配置 DAO 存放路径 --><javaClientGenerator targetPackage="com.blb.mapper" targetProject="src/main/java" type="XMLMAPPER"/><!-- 配置需要指定生成的数据库和表,% 代表所有表 --><table tableName="%"><!-- mysql 配置 --><!--            <generatedKey column="id" sqlStatement="Mysql" identity="true"/>--></table><!--        <table tableName="tb_roles">--><!--            &lt;!&ndash; mysql 配置 &ndash;&gt;--><!--            <generatedKey column="roleid" sqlStatement="Mysql" identity="true"/>--><!--        </table>--><!--        <table tableName="tb_permissions">--><!--            &lt;!&ndash; mysql 配置 &ndash;&gt;--><!--            <generatedKey column="perid" sqlStatement="Mysql" identity="true"/>--><!--        </table>--></context>
</generatorConfiguration>
<build><plugins><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>8.0.20</version></dependency><dependency><groupId>tk.mybatis</groupId><artifactId>mapper</artifactId><version>3.4.4</version></dependency></dependencies></plugin><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>

tkMapper的基本使用相关推荐

  1. tk-mapper 生成器

    tk-mapper生成代码 代码,项目地址 如何使用 1. 生成实体类, XML文件, Mapper接口. 2. 版本相关:mapper: 3.4.1mapper-spring-boot-starte ...

  2. SpringBoot继承TkMapper通用Mapper

    MyBatis通用Mapper提供了基本的CRUD的api , 省略了写大量基础代码甚至高级代码的时间 , 方便快捷 , 提升工作效率 . 可以参考通用Mapper文档 SpringBoot集成通用M ...

  3. tkMapper插件的详细讲解

    tkMapper插件的详细讲解 一.tkMapper简介 tkMapper就是一个MyBatis插件,是在MyBatis的基础上提供的开发工具,可以让开发变得简单,提高开发效率. 作用: 1.提供了针 ...

  4. springboot2.x整合tkmapper

    springboot整合tkmapper 1.导入pom依赖 1.1 导入springboot的parent依赖 <parent><artifactId>spring-boot ...

  5. SpringBoot整合tkMapper

    SpringBoot整合tkMapper 项目使用SpringBoot2.0,H2数据库,使用了 Lombok 简化代码:本人是刚入门的菜鸟,下面是本人使用SpringBoot整合tkMapper的一 ...

  6. 使用TKMapper主键的坑

    使用TKMapper通用Mapper时一定声明主键,否则selectByPrimaryKey会查询所有的实体参数,一定要导入import javax.persistence.Id;不要导成import ...

  7. tkMapper 简记

    tkMapper 实现基本CRUD操作以及分页查询和联表查询方法 目录 1. tkMapper 2. tkMapper 简介 3. tkMapper 整合 4. tkMapper 使用 5. tkMa ...

  8. SpringBoot使用tkmapper

    1.加载依赖 <dependency><groupId>tk.mybatis</groupId><artifactId>mapper-spring-bo ...

  9. SpringBoot集成TkMapper

    springboot集成TkMapper 简化持久层法人代码熟悉,提高开发效率: 先给大家截个图看一下效果 这就是效果!! 是不是感觉很爽.(TkMapper对单表的操作很方便的) 下来我们进入正题, ...

最新文章

  1. jQuery AJAX 网页无刷新上传示例
  2. Android 四大组件之 Activity
  3. 点击底部input输入框,弹出的软键盘挡住input(苹果手机使用第三方输入法 )
  4. 统计学习方法笔记(李航)———第六章(逻辑斯谛回归)
  5. MySQL 递归查询 当前节点及子节点
  6. 浅析B/S架构数据库连接方式
  7. ios 团购信息客户端demo(二)
  8. poj3264 Balanced Lineup(树状数组)
  9. python不好用_Python用不好?看官方中文文档啦
  10. php 检测移动设备,Github项目Mobile-Detect-检测移动设备的php类
  11. IoTP2PGate 两台物联网设备点对点通信快速实现方案
  12. layui 确认,取消弹窗
  13. 公司财务分析——收益性分析
  14. linux查看隐藏文件命令
  15. 计算机网络教室后黑板报,教室后黑板报设计图
  16. [leetcode]Binary Tree Level Order Traversal II
  17. windows10 更换密码
  18. 京东校招java笔试题_2017京东校招笔试编程题:进制转换、辗转相除
  19. 边缘计算隐私保护研究进展
  20. CSS 背景色 背景图片 渐变背景 - 径向渐变 background-image:radial-gradient()

热门文章

  1. Ubuntu通过tftp与嵌入式设备(开发板)进行文件互传
  2. php历法,Atitit.基于时间戳的农历日历历法日期计算
  3. 听说,要把南京大学的大门拆了
  4. 微型计算机显卡坞介绍,自带GTX 1070 全球最小显卡扩展坞亮相
  5. 一种解决拓展坞无法上网的方法
  6. linux系统查看日历
  7. 云师大的计算机师范专业好吗,云南除了云南师范大学,还有这些实力不错的师范学校...
  8. 解决 Unrecognized field xxx , not marked as ignorable 问题
  9. 用python制作生日蛋糕图片大全_Python 制作微信全家福,你就是朋友圈最亮的仔!...
  10. fn+f12查看接口