日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

springboot 和 mybatis整合:参数查询和动态sql

發布時間:2024/9/15 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 springboot 和 mybatis整合:参数查询和动态sql 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

springboot 和 mybatis整合:

mapper定義的是數據庫的操作方法:

@Mapper public interface UserMapper {}

單參數的處理:

@Select("select * from t_user")@Results({@Result(property = "userId", column = "USER_ID"),@Result(property = "username", column = "USERNAME"),@Result(property = "password", column = "PASSWORD"),@Result(property = "mobileNum", column = "PHONE_NUM")})List<User> list();

多參數的處理:

/*** 延伸:無論什么方式,如果涉及多個參數,則必須加上@Param注解,否則無法使用EL表達式獲取參數。*/@Select("select * from t_user where username like #{username} and password like #{password}")@Results({@Result(property = "userId", column = "USER_ID"),@Result(property = "username", column = "USERNAME"),@Result(property = "password", column = "PASSWORD"),@Result(property = "mobileNum", column = "PHONE_NUM")})User get(@Param("username") String username, @Param("password") String password);

CRUD的高級注解:

@SelectProvider
@InsertProvider
@UpdateProvider
@DeleteProvider

先在mapper下定義Provider,所謂的Provider就是自定義的sql語句,規則可以自定義

public class UserSqlProvider {/*** 方式1:在工具類的方法里,可以自己手工編寫SQL。*/public String listByUsername(String username) {return "select * from t_user where username =#{username}";} }

然后定義使用這個sql語句的方法,就在對應的mapper里面操作:

/*** 方式2:使用注解指定某個工具類的方法來動態編寫SQL.*/@SelectProvider(type = UserSqlProvider.class, method = "listByUsername")@Results({@Result(property = "userId", column = "USER_ID"),@Result(property = "username", column = "USERNAME"),@Result(property = "password", column = "PASSWORD"),@Result(property = "mobileNum", column = "PHONE_NUM")})List<User> listByUsername(String username);

controller里面使用:

@GetMapping("list/{username}")public List<User> listByUsername(@PathVariable("username") String username) {return userMapper.listByUsername(username);}

another samples:

UserSqlProvider.java /*** 方式2:也可以根據官方提供的API來編寫動態SQL。*/public String getBadUser(@Param("username") String username, @Param("password") String password) {return new SQL() {{SELECT("*");FROM("t_user");if (username != null && password != null) {WHERE("username like #{username} and password like #{password}");} else {WHERE("1=2");}}}.toString();}UserMapper.java@SelectProvider(type = UserSqlProvider.class, method = "getBadUser")@Results({@Result(property = "userId", column = "USER_ID"),@Result(property = "username", column = "USERNAME"),@Result(property = "password", column = "PASSWORD"),@Result(property = "mobileNum", column = "PHONE_NUM")})User getBadUser(@Param("username") String username, @Param("password") String password);UserController.java@GetMapping("get/bad/{username}/{password}")public User getBadUser(@PathVariable("username") String username, @PathVariable("password") String password) {return userMapper.getBadUser(username, password);}

總結

以上是生活随笔為你收集整理的springboot 和 mybatis整合:参数查询和动态sql的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。