【Mybatis】TKMybatis 介绍和使用
目录
一、什么是 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 介绍和使用相关推荐
- mybatisplus 结果_Java之MyBatis Plus介绍
Java之MyBatis Plus介绍 1.MyBatis Plus 介绍 MyBatis Plus 是国内人员开发的 MyBatis 增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开 ...
- MyBatis-学习笔记01【01.Mybatis课程介绍及环境搭建】
Java后端 学习路线 笔记汇总表[黑马程序员] MyBatis-学习笔记01[01.Mybatis课程介绍及环境搭建][day01] MyBatis-学习笔记02[02.Mybatis入门案例] M ...
- MyBatis JdbcType介绍
MyBatis JdbcType介绍 JdbcType介绍 数据库列字段都是有类型的,不同的数据库有不同的类型.为了表示这些数据类型,Java源码是采用枚举来定义的: public enum JDBC ...
- 1. MyBatis框架介绍
1. MyBatis框架介绍 1. 框架概述 程序开发中框架(framework)往往是对常见功能的封装,可以把框架理解为软件的设计规范或者标准化的组件,好比机械中的螺丝螺母等标准的机械部件 假如你要 ...
- Java MyBatis的介绍及其执行原理
写在前面 ??MyBatis学习 ??今天我们进行MyBatis框架的学习,认识MyBatis及其执行原理,感谢你的阅读,内容若有不当之处,希望大家多多指正,一起进步!!! 如果觉得博主文章还不错,可 ...
- MyBatis详细介绍
MyBatis基础入门 内容 1.MyBatis介绍 2.MyBatis入门程序 3.MyBatis使用Mapper接口 4.MyBatis之Config文件常用配置 一.MyBatis简介 1 .简 ...
- 【java学习之路】(java框架)003.Mybatis的介绍和基本使用
01Mybatis的介绍和基本使用 0.数据库操作框架的历程 (1) JDBC JDBC(Java Data Base Connection,java数据库连接)是一种用于执行SQL语句的Java ...
- mybatis plus介绍
简介 Mybatis-Plus(简称MP)是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发.提高效率而生. 我们的愿景是成为Mybatis最好的搭档,就像 ...
- 使用Mybatis/TkMybatis/Mybatis-Plus框架报错:无效的列类型: 1111
场景:使用TkMybatis/Mybatis-Plus等封装好CRUD框架有时候需要更新或新增某个字段的值为null存到数据库,但是往往出现如下错误: Caused by: org.apache.ib ...
- mybatis框架介绍
前端时间学了mybatis,现在终于挤出时间来整理下了. 1.mybatis介绍: 1.MyBatis 原来是apache的一个开源项目ibatis,后来改名为mybatis,所以说ibatis和my ...
最新文章
- JS 实现下载Blod文件
- 大数据领域75个核心术语讲解!
- 为什么说,长跑和爬山能锻炼意志?因为要不停的run,run,run......
- python0x80070005拒绝访问_PowerShell启用winrm失败:拒绝访问 0x80070005 -2147024891
- 一个简单的防爬虫脚本(转载欧彬)
- Hadoop框架:MapReduce基本原理和入门案例
- [20180123]测试SQLNET.EXPIRE_TIME参数.txt
- 环境变量path中,加载顺序,先加在配置在最前面的,如果找到不继续往下寻找。
- Dos攻击与DDos攻击
- FPGA--有限状态机(FSM)的设计
- verilog驱动1602液晶屏
- 竞速游戏任务系统设计
- ProgressDialog在线程里下载图片
- 大数据三个特点的理解
- 独家 | 当热钱不再涌动——2019人工智能行业冷暖观察
- syl——linux学习(一)
- 南陵中学2021高考成绩查询,2018年南陵中学高考成绩喜报
- 【Albert带你1小时看遍美国前沿科技与商业运作】微访谈精选
- 刘洪盛广东发研考察宝隆农业国稻种芯功能性水稻示范基地
- 视频教程-SpringBoot+MongoDB+Vue前后分离-Java