当前位置: 首页 > 工具软件 > kot-mybatis > 使用案例 >

TK.mybatis使用详情

周朗
2023-12-01

TkMybatis

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

基本步骤

  1. 引入TkMybatis的Maven依赖

 

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

2.实体类的相关配置,@Id,@Table

考虑到基本数据类型在Java 类中都有默认值,会导致MyBatis 在执行相关操作时很难判断当前字段是否为null,所以在MyBatis 环境下使用Java 实体类时尽量不要使用基本数据类型,都使用对应的包装类型。

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

@Table:描述数据库表信息,主要属性有name(表名)、schema、catalog、uniqueConstraints[uniqueConstraints 用来批量命名唯一键其作用等同于多个:@Column(unique = true)]等。

@Id:指定表主键字段。

@Column:描述数据库字段信息,主要属性有name(字段名)、columnDefinition[属性表示创建表时,该字段创建的SQL语句,一般用于通过Entity生成表定义时使用,如果数据库中表已经建好,该属性没有必要使用]、insertable、length、nullable(是否可为空)、precision、scale、table、unique、updatable等。

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

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

3.Mapper继承tkMabatis的Mapper接口

以患者住院信息的mapper为例:
a、PatientHospitalInfoMapper继承了MyMapper;
b、MyMapper继承了Mapper<T>, MySqlMapper<T>【主要讲解mapper】;
c、Mapper继承了BaseMapper<T>,ExampleMapper<T>,RowBoundsMapper<T>,Marker;
d、BaseMapper<T>继承了:
BaseSelectMapper<T>,
BaseInsertMapper<T>,insert保存一个实体,null的属性也会保存,不会使用数据库默认值,insertSelective保存一个实体,null的属性不会保存,会使用数据库默认值
BaseUpdateMapper<T>,updateByPrimaryKey根据主键更新实体全部字段,null值会被更新,updateByPrimaryKeySelective根据主键更新属性不为null的值
BaseDeleteMapper<T> delete根据实体属性作为条件进行删除,查询条件使用等号,deleteByPrimaryKey
e、ExampleMapper<T>继承了:

public interface ExampleMapper<T>

SelectByExampleMapper<T>,根据Example条件进行查询list

SelectOneByExampleMapper<T>,根据Example条件进行查询

SelectCountByExampleMapper<T>,根据Example条件进行查询总数

DeleteByExampleMapper<T>,根据Example条件删除数据

UpdateByExampleMapper<T>,根据Example条件更新实体`record`包含的全部属性,null值会被更新

UpdateByExampleSelectiveMapper<T> 根据Example条件更新实体`record`包含的不是null的属性值

f、主要分析Example:

Example是mybatis的逆向工程中会生成实例及实例对应的example,example用于添加条件,相当where后面的部分

example.setOrderByClause(“字段名 ASC”);         添加升序排列条件,DESC为降序

example.setDistinct(false)      去除重复,boolean型,true为选择不重复的记录。

criteria.andXxxIsNull   添加字段xxx为null的条件

criteria.andXxxIsNotNull      添加字段xxx不为null的条件

criteria.andXxxEqualTo(value)       添加xxx字段等于value条件

criteria.andXxxNotEqualTo(value) 添加xxx字段不等于value条件

criteria.andXxxGreaterThan(value) 添加xxx字段大于value条件

criteria.andXxxGreaterThanOrEqualTo(value) 添加xxx字段大于等于value条件

criteria.andXxxLessThan(value)      添加xxx字段小于value条件

criteria.andXxxLessThanOrEqualTo(value)       添加xxx字段小于等于value条件

criteria.andXxxIn(List<?>) 添加xxx字段值在List<?>条件

criteria.andXxxNotIn(List<?>)    添加xxx字段值不在List<?>条件

criteria.andXxxLike(“%”+value+”%”)    添加xxx字段值为value的模糊查询条件

criteria.andXxxNotLike(“%”+value+”%”)       添加xxx字段值不为value的模糊查询条件

criteria.andXxxBetween(value1,value2)   添加xxx字段值在value1和value2之间条件

criteria.andXxxNotBetween(value1,value2)      添加xxx字段值不在value1和value2之间条件

4. 启动类Application或自定义Mybatis配置类上使用@MapperScan注解扫描Mapper接口

@EnableAsync
@SpringBootApplication
@MapperScan("com.iyungu.mns.dao")
@ComponentScan(basePackages = {"com.iyungu.mns.server","com.iyungu.mns.core","com.iyungu.mns.dao","com.iyungu.mns.common"})
@ConditionalOnClass(SpringfoxWebMvcConfiguration.class)
@EnableCaching
@EnableRedisHttpSession
public class ServerApplication implements WebMvcConfigurer {

5. 在application.properties配置文件中,配置mapper.xml文件指定的位置[可选]

mybatis:
  mapper-locations: classpath:mapper/**/*.xml
  configuration.cache-enabled: true
  type-aliases-package: com.iyungu.mns.model.*

6. 如有需要,实现mapper.xml自定义sql语句

a). TkMybatis默认使用继承Mapper接口中传入的实体类对象去数据库寻找对应的表,因此如果表名与实体类名不满足对应规则时,会报错,这时使用@Table为实体类指定表。(这种对应规则为驼峰命名规则)

b). 使用TkMybatis可以无xml文件实现数据库操作,只需要继承tkMybatis的Mapper接口即可。

c). 如果有自定义特殊的需求,可以添加mapper.xml进行自定义sql书写,但路径必须与步骤4对应。

 类似资料: