Mybatis 高級用法和tk.mybatis使用示例詳解
使用@SelectProvider、@InsertProvider、@UpdateProvider、@DeleteProvider
MyBatis 3.x 版本提供了以下4個CRUD的高級注解。
@SelectProvider:用于構建動態(tài)查詢SQL。
@InsertProvider:用于構建動態(tài)新增SQL。
@UpdateProvider:用于構建動態(tài)更新SQL。
@DeleteProvider:用于構建動態(tài)刪除SQL。
@SelectProvider
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
@Repeatable(SelectProvider.List.class)
public @interface SelectProvider {
// 用于指定獲取 sql 語句的指定類
Class<?> type();
// 指定類中要執(zhí)行獲取 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 的語法即可實現(xiàn)數(shù)據(jù)庫操作。
引入依賴
<!-- 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>查詢實現(xiàn)
實體映射類
建立實體類用@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 省略
}實體類規(guī)范
- 表名默認使用類名,駝峰轉下劃線(只對大寫字母進行處理),如
UserInfo默認對應的表名為user_info。 - 表名可以使用
@Table(name = “tableName”)進行指定,對不符合第一條默認規(guī)則的可以通過這種方式指定表名。 - 字段默認和
@Column一樣,都會作為表字段,表字段默認為Java對象的Field名字駝峰轉下劃線形式。 - 可以使用
@Column(name = “fieldName”)指定不符合第3條規(guī)則的字段名。 - 使用
@Transient注解可以忽略字段,添加該注解的字段不會作為表字段使用。 - 建議一定是有一個
@Id注解作為主鍵的字段,可以有多個@Id注解的字段作為聯(lián)合主鍵。
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使用內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
SpringBoot監(jiān)聽Redis Key過期事件的幾種方式
本文介紹了使用Redis監(jiān)聽鍵過期來實現(xiàn)電商平臺優(yōu)惠券自動失效的解決方案,包括配置Redis、實現(xiàn)監(jiān)聽器、使用線程池優(yōu)化以及進一步優(yōu)化措施,需要的朋友可以參考下2026-03-03
SpringBoot基于RabbitMQ實現(xiàn)消息可靠性的方法
RabbitMQ 提供了 publisher confirm 機制來避免消息發(fā)送到 MQ 過程中丟失,這種機制必須給每個消息指定一個唯一ID,消息發(fā)送到MQ以后,會返回一個結果給發(fā)送者,表示消息是否處理成功,本文給大家介紹了SpringBoot基于RabbitMQ實現(xiàn)消息可靠性的方法,需要的朋友可以參考下2024-04-04
Springboot 如何實現(xiàn)filter攔截token驗證和跨域
這篇文章主要介紹了Springboot 如何實現(xiàn)filter攔截token驗證和跨域操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08
SpringBoot使用@Validated處理校驗的方法步驟
@Validated?注解的主要目的是啟用和利用?Spring?的驗證框架,它可以用于類上也可以用于方法參數(shù)上,本文給大家介紹了SpringBoot使用@Validated優(yōu)雅的處理校驗的方法步驟,通過代碼示例介紹的非常詳細,需要的朋友可以參考下2024-08-08
Red?Hat?安裝JDK與IntelliJ?IDEA的詳細過程
YUM是基于Red Hat的Linux發(fā)行版的一個強大而用戶友好的包管理工具,這篇文章主要介紹了Red?Hat安裝JDK與IntelliJ IDEA,需要的朋友可以參考下2023-08-08
@TableField(typeHandler = FastjsonTypeHandler.clas
文章總結個人前端上傳經(jīng)驗,提出了一些優(yōu)化上傳方法的建議,旨在提高上傳效率和用戶體驗,希望能為開發(fā)者提供參考2026-04-04

