tkMapper的基本使用
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&useUnicode=true&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">--><!-- <!– mysql 配置 –>--><!-- <generatedKey column="roleid" sqlStatement="Mysql" identity="true"/>--><!-- </table>--><!-- <table tableName="tb_permissions">--><!-- <!– mysql 配置 –>--><!-- <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的基本使用相关推荐
- tk-mapper 生成器
tk-mapper生成代码 代码,项目地址 如何使用 1. 生成实体类, XML文件, Mapper接口. 2. 版本相关:mapper: 3.4.1mapper-spring-boot-starte ...
- SpringBoot继承TkMapper通用Mapper
MyBatis通用Mapper提供了基本的CRUD的api , 省略了写大量基础代码甚至高级代码的时间 , 方便快捷 , 提升工作效率 . 可以参考通用Mapper文档 SpringBoot集成通用M ...
- tkMapper插件的详细讲解
tkMapper插件的详细讲解 一.tkMapper简介 tkMapper就是一个MyBatis插件,是在MyBatis的基础上提供的开发工具,可以让开发变得简单,提高开发效率. 作用: 1.提供了针 ...
- springboot2.x整合tkmapper
springboot整合tkmapper 1.导入pom依赖 1.1 导入springboot的parent依赖 <parent><artifactId>spring-boot ...
- SpringBoot整合tkMapper
SpringBoot整合tkMapper 项目使用SpringBoot2.0,H2数据库,使用了 Lombok 简化代码:本人是刚入门的菜鸟,下面是本人使用SpringBoot整合tkMapper的一 ...
- 使用TKMapper主键的坑
使用TKMapper通用Mapper时一定声明主键,否则selectByPrimaryKey会查询所有的实体参数,一定要导入import javax.persistence.Id;不要导成import ...
- tkMapper 简记
tkMapper 实现基本CRUD操作以及分页查询和联表查询方法 目录 1. tkMapper 2. tkMapper 简介 3. tkMapper 整合 4. tkMapper 使用 5. tkMa ...
- SpringBoot使用tkmapper
1.加载依赖 <dependency><groupId>tk.mybatis</groupId><artifactId>mapper-spring-bo ...
- SpringBoot集成TkMapper
springboot集成TkMapper 简化持久层法人代码熟悉,提高开发效率: 先给大家截个图看一下效果 这就是效果!! 是不是感觉很爽.(TkMapper对单表的操作很方便的) 下来我们进入正题, ...
最新文章
- jQuery AJAX 网页无刷新上传示例
- Android 四大组件之 Activity
- 点击底部input输入框,弹出的软键盘挡住input(苹果手机使用第三方输入法 )
- 统计学习方法笔记(李航)———第六章(逻辑斯谛回归)
- MySQL 递归查询 当前节点及子节点
- 浅析B/S架构数据库连接方式
- ios 团购信息客户端demo(二)
- poj3264 Balanced Lineup(树状数组)
- python不好用_Python用不好?看官方中文文档啦
- php 检测移动设备,Github项目Mobile-Detect-检测移动设备的php类
- IoTP2PGate 两台物联网设备点对点通信快速实现方案
- layui 确认,取消弹窗
- 公司财务分析——收益性分析
- linux查看隐藏文件命令
- 计算机网络教室后黑板报,教室后黑板报设计图
- [leetcode]Binary Tree Level Order Traversal II
- windows10 更换密码
- 京东校招java笔试题_2017京东校招笔试编程题:进制转换、辗转相除
- 边缘计算隐私保护研究进展
- CSS 背景色 背景图片 渐变背景 - 径向渐变 background-image:radial-gradient()
热门文章
- Ubuntu通过tftp与嵌入式设备(开发板)进行文件互传
- php历法,Atitit.基于时间戳的农历日历历法日期计算
- 听说,要把南京大学的大门拆了
- 微型计算机显卡坞介绍,自带GTX 1070 全球最小显卡扩展坞亮相
- 一种解决拓展坞无法上网的方法
- linux系统查看日历
- 云师大的计算机师范专业好吗,云南除了云南师范大学,还有这些实力不错的师范学校...
- 解决 Unrecognized field xxx , not marked as ignorable 问题
- 用python制作生日蛋糕图片大全_Python 制作微信全家福,你就是朋友圈最亮的仔!...
- fn+f12查看接口