目录

一、什么是 TKMybatis

二、TKMybatis 使用

2.1 Springboot 项目中加入依赖

2.2 使用讲解

2.2.1 实体类中使用

2.2.2 dao中使用

2.2.3 Service 层中使用

2.3 实际案例

2.3.1 dao 层使用

2.3.2 service 层使用


一、什么是 TKMybatis

TKMybatis 是基于 Mybatis 框架开发的一个工具,内部实现了对单表的基本数据操作,只需要简单继承 TKMybatis 提供的接口,就能够实现无需编写任何 sql 即能完成单表操作。

二、TKMybatis 使用

2.1 Springboot 项目中加入依赖

<!--通用mapper起步依赖-->
<dependency><groupId>tk.mybatis</groupId><artifactId>mapper-spring-boot-starter</artifactId><version>2.0.4</version>
</dependency>

在 POJO 类中加入依赖

<!--每个工程都有Pojo,都需要用到该包对应的注解-->
<dependency><groupId>javax.persistence</groupId><artifactId>persistence-api</artifactId><version>1.0</version><scope>compile</scope>
</dependency>

在启动类中配置 @MapperScan 扫描

@SpringBootApplication
@MapperScan(basePackages = {"com.tom.order.mapper"})
public class OrderApplication {public static void main(String[] args) {SpringApplication.run(OrderApplication.class, args);}
}

2.2 使用讲解

2.2.1 实体类中使用

在实体类中,常用的注解和意义为:

@Table:描述数据库表信息,主要属性有name(表名)、schema、catalog、uniqueConstraints等。

@Id:指定表主键字段,无属性值。

@Column:描述数据库字段信息,主要属性有name(字段名)、columnDefinition、insertable、length、nullable(是否可为空)、precision、scale、table、unique、updatable等。

@ColumnType:描述数据库字段类型,可对一些特殊类型作配置,进行特殊处理,主要属性有jdbcType、column、typeHandler等。

其他注解如:@Transient、@ColumnResult、@JoinColumn、@OrderBy、@Embeddable等暂不描述

2.2.2 dao中使用

单表操作,只需要继承 tk.mybatis 下的 Mapper 接口即可使用

import tk.mybatis.mapper.common.Mapper;@Repository
public interface BrandMapper extends Mapper<Brand> {
}

查看具体使用:内部都已经封装了基本的单表操作

2.2.3 Service 层中使用

操作 类型 介绍
增加 Mapper.insert(record); 保存一个实体,null的属性也会保存,不会使用数据库默认值
Mapper.insertSelective(record); 保存一个实体,忽略空值,即没提交的值会使用使用数据库默认值
 
删除 Mapper.delete(record); 根据实体属性作为条件进行删除,查询条件使用等号
Mapper.deleteByExample(example) 根据Example条件删除数据
Mapper.deleteByPrimaryKey(key) 根据主键字段进行删除,方法参数必须包含完整的主键属性
 
修改 Mapper.updateByExample(record,example) 根据Example条件更新实体`record`包含的全部属性,null值会被更新
Mapper.updateByExampleSelective(record, example) 根据Example条件更新实体`record`包含的不是null的属性值
Mapper.updateByPrimaryKey(record) 根据主键更新实体全部字段,null值会被更新
Mapper.updateByPrimaryKeySelective(record) 根据主键更新属性不为null的值
 
查询 Mapper.select(record) 根据实体中的属性值进行查询,查询条件使用等号
Mapper.selectAll() 查询全部结果
Mapper.selectByExample(example) 根据Example条件进行查询
Mapper.selectByPrimaryKey(key) 根据主键字段进行查询,方法参数必须包含完整的主键属性,查询条件使用等号
Mapper.selectCount(record) 根据实体中的属性查询总数,查询条件使用等号
Mapper.selectCountByExample(example) 根据Example条件进行查询总数
Mapper.selectOne(record)

根据实体中的属性进行查询,只能有一个返回值,有多个结果是抛出异常,查询条件使用等号。

但是如果存在某个属性为int,则会初始化为0。可能影响到实际使用

2.3 实际案例

2.3.1 dao 层使用


import tk.mybatis.mapper.common.Mapper;/*** DAO 使用通用Mapper* DSO接口需要继承 tk.mybatis.mapper.common.Mapper*/
@Repository
public interface BrandMapper extends Mapper<Brand> {}

2.3.2 service 层使用

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import tk.mybatis.mapper.entity.Example;import java.util.List;@Service
public class BrandServiceImpl implements BrandService {@Autowiredprivate BrandMapper brandMapper;public Example createExample(Brand brand) {// 自定义条件搜索对象 ExampleExample example = new Example(Brand.class);Example.Criteria criteria = example.createCriteria(); //条件构造器if (brand != null) {if (!StringUtils.isEmpty(brand.getName())) {criteria.andLike("name", '%' + brand.getName() + '%');}if (!StringUtils.isEmpty(brand.getLetter())) {criteria.andEqualTo("letter", brand.getLetter());}}return example;}@Overridepublic List<Brand> findAll() {return brandMapper.selectAll();}@Overridepublic List<Brand> findList(Brand brand) {Example example = createExample(brand);return brandMapper.selectByExample(example);}@Overridepublic Brand findById(Integer id) {return brandMapper.selectByPrimaryKey(id);}/*** 分页查询* @param page  当前页* @param size  每页显示的条数* @return*/@Overridepublic PageInfo<Brand> pageSearch(Integer page, Integer size) {// 分页实现// 后面的查询必须是紧跟集合查询PageHelper.startPage(page, size);// 查询集合List<Brand> brands = brandMapper.selectAll();return new PageInfo<Brand>(brands);}@Overridepublic PageInfo<Brand> pageSearchAndCondition(Brand brand, Integer page, Integer size) {// 开始分页PageHelper.startPage(page, size);// 搜索数据Example example = createExample(brand);List<Brand> list = brandMapper.selectByExample(example);return new PageInfo<Brand>(list);}/*** 增加品牌* @param brand*/@Overridepublic void add(Brand brand) {// 使用通用 Mapper.insertSelective// 方法中但凡带有selective就会忽略空值int i = brandMapper.insertSelective(brand);}/*** 根据id修改品牌* @param brand*/@Overridepublic void update(Brand brand) {// 使用通用mapper.update();brandMapper.updateByPrimaryKeySelective(brand);}/*** 根据id删除* @param id*/@Overridepublic void del(Integer id) {brandMapper.deleteByPrimaryKey(id);}
}

三、扩展介绍

https://juejin.im/post/5cbfd158f265da038860b82f

【Mybatis】TKMybatis 介绍和使用相关推荐

  1. mybatisplus 结果_Java之MyBatis Plus介绍

    Java之MyBatis Plus介绍 1.MyBatis Plus 介绍 MyBatis Plus 是国内人员开发的 MyBatis 增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开 ...

  2. MyBatis-学习笔记01【01.Mybatis课程介绍及环境搭建】

    Java后端 学习路线 笔记汇总表[黑马程序员] MyBatis-学习笔记01[01.Mybatis课程介绍及环境搭建][day01] MyBatis-学习笔记02[02.Mybatis入门案例] M ...

  3. MyBatis JdbcType介绍

    MyBatis JdbcType介绍 JdbcType介绍 数据库列字段都是有类型的,不同的数据库有不同的类型.为了表示这些数据类型,Java源码是采用枚举来定义的: public enum JDBC ...

  4. 1. MyBatis框架介绍

    1. MyBatis框架介绍 1. 框架概述 程序开发中框架(framework)往往是对常见功能的封装,可以把框架理解为软件的设计规范或者标准化的组件,好比机械中的螺丝螺母等标准的机械部件 假如你要 ...

  5. Java MyBatis的介绍及其执行原理

    写在前面 ??MyBatis学习 ??今天我们进行MyBatis框架的学习,认识MyBatis及其执行原理,感谢你的阅读,内容若有不当之处,希望大家多多指正,一起进步!!! 如果觉得博主文章还不错,可 ...

  6. MyBatis详细介绍

    MyBatis基础入门 内容 1.MyBatis介绍 2.MyBatis入门程序 3.MyBatis使用Mapper接口 4.MyBatis之Config文件常用配置 一.MyBatis简介 1 .简 ...

  7. 【java学习之路】(java框架)003.Mybatis的介绍和基本使用

    01Mybatis的介绍和基本使用 0.数据库操作框架的历程 (1) JDBC ​ JDBC(Java Data Base Connection,java数据库连接)是一种用于执行SQL语句的Java ...

  8. mybatis plus介绍

    简介 Mybatis-Plus(简称MP)是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发.提高效率而生. 我们的愿景是成为Mybatis最好的搭档,就像 ...

  9. 使用Mybatis/TkMybatis/Mybatis-Plus框架报错:无效的列类型: 1111

    场景:使用TkMybatis/Mybatis-Plus等封装好CRUD框架有时候需要更新或新增某个字段的值为null存到数据库,但是往往出现如下错误: Caused by: org.apache.ib ...

  10. mybatis框架介绍

    前端时间学了mybatis,现在终于挤出时间来整理下了. 1.mybatis介绍: 1.MyBatis 原来是apache的一个开源项目ibatis,后来改名为mybatis,所以说ibatis和my ...

最新文章

  1. JS 实现下载Blod文件
  2. 大数据领域75个核心术语讲解!
  3. 为什么说,长跑和爬山能锻炼意志?因为要不停的run,run,run......
  4. python0x80070005拒绝访问_PowerShell启用winrm失败:拒绝访问 0x80070005 -2147024891
  5. 一个简单的防爬虫脚本(转载欧彬)
  6. Hadoop框架:MapReduce基本原理和入门案例
  7. [20180123]测试SQLNET.EXPIRE_TIME参数.txt
  8. 环境变量path中,加载顺序,先加在配置在最前面的,如果找到不继续往下寻找。
  9. Dos攻击与DDos攻击
  10. FPGA--有限状态机(FSM)的设计
  11. verilog驱动1602液晶屏
  12. 竞速游戏任务系统设计
  13. ProgressDialog在线程里下载图片
  14. 大数据三个特点的理解
  15. 独家 | 当热钱不再涌动——2019人工智能行业冷暖观察
  16. syl——linux学习(一)
  17. 南陵中学2021高考成绩查询,2018年南陵中学高考成绩喜报
  18. 【Albert带你1小时看遍美国前沿科技与商业运作】微访谈精选
  19. 刘洪盛广东发研考察宝隆农业国稻种芯功能性水稻示范基地
  20. 视频教程-SpringBoot+MongoDB+Vue前后分离-Java

热门文章

  1. Java从入门到放弃第1天
  2. 飞Young任意路由器连接[破解路由器限制]
  3. Python 显示实时时间方法
  4. 定时器加状态转移图方式实现DS18B20
  5. java实现汽车租赁系统
  6. ZTE 5G UPF 性能白皮书
  7. 我的第一个app:电信宽带密码一键获取客户端
  8. 乐鑫esp8266学习rtos3.0笔记第8篇:esp8266-12模块基于rtos3.0 SDK编程扫描周围获取附近可用的 Wi-Fi 热点路由器信息,同样适合esp32。(附带demo)
  9. 最新fl studio20.8中文电音编曲宿主制作软件
  10. WMS系统仓库条码管理流程解析