Mybatis 高级用法和tk.mybatis使用示例详解
作者:全栈程序员
tkmybatis 是对底层 sql 进行了抽象封装,不需要考虑 sql 怎么写,只需要按照逻辑思维,遵循 tkmybatis 的语法即可实现数据库操作,这篇文章主要介绍了Mybatis 高级用法和tk.mybatis使用,需要的朋友可以参考下
使用@SelectProvider、@InsertProvider、@UpdateProvider、@DeleteProvider
MyBatis 3.x 版本提供了以下4个CRUD的高级注解。
@SelectProvider:用于构建动态查询SQL。
@InsertProvider:用于构建动态新增SQL。
@UpdateProvider:用于构建动态更新SQL。
@DeleteProvider:用于构建动态删除SQL。
@SelectProvider
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
@Repeatable(SelectProvider.List.class)
public @interface SelectProvider {
// 用于指定获取 sql 语句的指定类
Class<?> type();
// 指定类中要执行获取 sql 语句的方法
String method();
}使用例子
@Mapper
public interface TkUserMapper extends BaseMapper<TkUser> {
@SelectProvider(type = TkUserMapperProvider.class, method = "selectById")
List<TkUser> selectById(@Param("id") String id);
class TkUserMapperProvider {
public String selectById(@Param("id") String id) {
SQL sql = new SQL();
sql.SELECT("*");
sql.FROM("TEST_USER");
return sql.toString();
}
}
}tk.mybatis
tkmybatis 是对底层 sql 进行了抽象封装,不需要考虑 sql 怎么写,只需要按照逻辑思维,遵循 tkmybatis 的语法即可实现数据库操作。
引入依赖
<!-- mybatis 通用 mapper -->
<!-- https://mvnrepository.com/artifact/tk.mybatis/mapper-spring-boot-starter -->
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>4.3.0</version>
</dependency>查询实现
实体映射类
建立实体类用@Table注解标注映射表名称注意字段表名称大小写问题。
@Table(name = "USER")
public class TkUser {
private int id;
private String username;
private String password;
private int gender;
private int age;
private int idcard;
private int phone;
// get set 省略
}实体类规范
- 表名默认使用类名,驼峰转下划线(只对大写字母进行处理),如
UserInfo默认对应的表名为user_info。 - 表名可以使用
@Table(name = “tableName”)进行指定,对不符合第一条默认规则的可以通过这种方式指定表名。 - 字段默认和
@Column一样,都会作为表字段,表字段默认为Java对象的Field名字驼峰转下划线形式。 - 可以使用
@Column(name = “fieldName”)指定不符合第3条规则的字段名。 - 使用
@Transient注解可以忽略字段,添加该注解的字段不会作为表字段使用。 - 建议一定是有一个
@Id注解作为主键的字段,可以有多个@Id注解的字段作为联合主键。
dao层
单表操作,只需要继承 tk.mybatis 下的 Mapper 接口即可使用

@Mapper
public interface TkUserMapper extends BaseMapper<TkUser> {
@SelectProvider(type = TkUserMapperProvider.class, method = "selectById")
List<TkUser> selectById(@Param("id") String id);
class TkUserMapperProvider {
public String selectById(@Param("id") String id) {
SQL sql = new SQL();
sql.SELECT("*");
sql.FROM("TEST_USER");
return sql.toString();
}
}
}调用dao
@Autowired
private TkUserMapper tkUserMapper;
@Override
public void test1() {
String id = "1";
List<TkUser> tkUserList = tkUserMapper.selectById(id);
log.info("test");
}到此这篇关于Mybatis 高级用法和tk.mybatis使用的文章就介绍到这了,更多相关Mybatis tk.mybatis使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
