Mybatis 高级用法和tk.mybatis使用示例详解

 更新时间:2024年05月28日 15:03:26   作者:全栈程序员  
tkmybatis 是对底层 sql 进行了抽象封装,不需要考虑 sql 怎么写,只需要按照逻辑思维,遵循 tkmybatis 的语法即可实现数据库操作,这篇文章主要介绍了Mybatis 高级用法和tk.mybatis使用,需要的朋友可以参考下

使用@SelectProvider、@InsertProvider、@UpdateProvider、@DeleteProvider

MyBatis 3.x 版本提供了以下4CRUD的高级注解。

@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使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 聊聊Redis的单线程模型

    聊聊Redis的单线程模型

    Redis是单线程,主要是指Redis的网络IO和读写是由一个线程来完成的,但Redis的其他功能,比如持久化、异步删除、集群数据同步等,其实是由额外的线程执行的。这不是本文讨论的重点,有个印象即可
    2022-12-12
  • 简单了解java类的初始化以及类的实例化

    简单了解java类的初始化以及类的实例化

    这篇文章主要介绍了简单了解java类的初始化以及类的实例化,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • SpringBoot监听Redis Key过期事件的几种方式

    SpringBoot监听Redis Key过期事件的几种方式

    本文介绍了使用Redis监听键过期来实现电商平台优惠券自动失效的解决方案,包括配置Redis、实现监听器、使用线程池优化以及进一步优化措施,需要的朋友可以参考下
    2026-03-03
  • SpringBoot基于RabbitMQ实现消息可靠性的方法

    SpringBoot基于RabbitMQ实现消息可靠性的方法

    RabbitMQ 提供了 publisher confirm 机制来避免消息发送到 MQ 过程中丢失,这种机制必须给每个消息指定一个唯一ID,消息发送到MQ以后,会返回一个结果给发送者,表示消息是否处理成功,本文给大家介绍了SpringBoot基于RabbitMQ实现消息可靠性的方法,需要的朋友可以参考下
    2024-04-04
  • Springboot 如何实现filter拦截token验证和跨域

    Springboot 如何实现filter拦截token验证和跨域

    这篇文章主要介绍了Springboot 如何实现filter拦截token验证和跨域操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • SpringBoot使用@Validated处理校验的方法步骤

    SpringBoot使用@Validated处理校验的方法步骤

    @Validated 注解的主要目的是启用和利用 Spring 的验证框架,它可以用于类上也可以用于方法参数上,本文给大家介绍了SpringBoot使用@Validated优雅的处理校验的方法步骤,通过代码示例介绍的非常详细,需要的朋友可以参考下
    2024-08-08
  • Red Hat 安装JDK与IntelliJ IDEA的详细过程

    Red Hat 安装JDK与IntelliJ IDEA的详细过程

    YUM是基于Red Hat的Linux发行版的一个强大而用户友好的包管理工具,这篇文章主要介绍了Red Hat安装JDK与IntelliJ IDEA,需要的朋友可以参考下
    2023-08-08
  • @TableField(typeHandler = FastjsonTypeHandler.class)使用及说明

    @TableField(typeHandler = FastjsonTypeHandler.clas

    文章总结个人前端上传经验,提出了一些优化上传方法的建议,旨在提高上传效率和用户体验,希望能为开发者提供参考
    2026-04-04
  • SpringBoot整合Shiro两种方式(总结)

    SpringBoot整合Shiro两种方式(总结)

    这篇文章主要介绍了SpringBoot整合Shiro两种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-06-06
  • SpringBoot中内置的49个常用工具类使用

    SpringBoot中内置的49个常用工具类使用

    SpringBoot以其强大的自动配置和丰富的生态系统成为Java开发的首选框架,本文将介绍49个常用工具类,并通过简洁的代码示例展示它们的基本用法,希望对大家有一定的帮助
    2025-04-04

最新评论