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

相关文章

  • 深入浅出Java中的字节流和字符流详解

    深入浅出Java中的字节流和字符流详解

    Java 中的输入输出(I/O)流主要分为字节流和字符流,这两类流为开发者提供了高效的文件读写方式,也解决了不同编码格式下的字符处理问题,本文将带你深入了解字节流和字符流的区别、应用场景以及如何使用它们处理文件操作
    2024-12-12
  • 常用数字签名算法RSA与DSA的Java程序内实现示例

    常用数字签名算法RSA与DSA的Java程序内实现示例

    这篇文章主要介绍了常用数字签名算法RSA与DSA的Java程序内实现示例,一般来说DSA算法用于签名的效率会比RSA要快,需要的朋友可以参考下
    2016-04-04
  • SpringSecurity Web权限方案实现全过程

    SpringSecurity Web权限方案实现全过程

    Spring Security是一个功能强大且高度可定制的身份验证和授权框架,专门用于保护Java应用程序的Web集成,下面这篇文章主要给大家介绍了关于SpringSecurity Web权限方案实现的相关资料,需要的朋友可以参考下
    2024-01-01
  • Java中的继承详情

    Java中的继承详情

    这篇文章主要介绍了Java中的继承详情,继承是面向对象三大特征之一,可以使得子类具有父类的属性和方法,还可以在子类中重新定义,以及追加属性和方法,下文介绍需要的朋友可以参考下
    2022-04-04
  • SpringBoot部署SSL证书(JKS格式)

    SpringBoot部署SSL证书(JKS格式)

    文将介绍如何在Spring Boot应用中部署SSL证书,以实现安全传输和保护数据隐私,具有一定的参考价值,感兴趣的可以了解一下
    2023-10-10
  • Java ​​​​​​​HashMap遍历方法汇总

    Java ​​​​​​​HashMap遍历方法汇总

    这篇文章主要介绍了Java ​​​​​​​HashMap遍历方法汇总,HashMap 的遍历方法有很多种,不同的 JDK 版本有不同的写法,下文关于其遍历方法总结需要的小伙伴可以参考一下
    2022-05-05
  • java监听器的实现和原理详解

    java监听器的实现和原理详解

    这篇文章主要给大家介绍了关于java监听器实现和原理的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用java具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-08-08
  • SpringBoot创建定时任务的示例详解

    SpringBoot创建定时任务的示例详解

    在Spring Boot中创建定时任务,通常使用@Scheduled注解,这是Spring框架提供的一个功能,允许你按照固定的频率(如每天、每小时、每分钟等)执行某个方法,本文给大家介绍了SpringBoot创建定时任务的示例,需要的朋友可以参考下
    2024-04-04
  • Java二叉树中LCA问题解决方法两则

    Java二叉树中LCA问题解决方法两则

    这篇文章主要介绍了Java二叉树中LCA问题解决方法,总的来说这并不是一道难题,那为什么要拿出这道题介绍?拿出这道题真正想要传达的是解题的思路,以及不断优化探寻最优解的过程。希望通过这道题能给你带来一种解题优化的思路
    2022-12-12
  • JAVA设计模式之解释器模式详解

    JAVA设计模式之解释器模式详解

    这篇文章主要介绍了JAVA设计模式之解释器模式详解,解释器模式是类的行为模式,给定一个语言之后,解释器模式可以定义出其文法的一种表示,并同时提供一个解释器,需要的朋友可以参考下
    2015-04-04

最新评论