亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在SpringBoot中整合MyBatis定義Mapper

發布時間:2021-06-12 17:29:12 來源:億速云 閱讀:232 作者:Leah 欄目:web開發

本篇文章給大家分享的是有關怎么在SpringBoot中整合MyBatis定義Mapper,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

依賴

<dependency>   <groupId>org.springframework.boot</groupId>   <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency>   <groupId>org.mybatis.spring.boot</groupId>   <artifactId>mybatis-spring-boot-starter</artifactId>   <version>2.1.4</version> </dependency> <dependency>   <groupId>com.github.pagehelper</groupId>   <artifactId>pagehelper-spring-boot-starter</artifactId>   <version>1.3.0</version> </dependency>

 應用配置

pagehelper:   helperDialect: mysql   reasonable: true   pageSizeZero: true   offsetAsPageNum: true   rowBoundsWithCount: true --- mybatis:   type-aliases-package: com.pack.domain   configuration:     lazy-loading-enabled: false     aggressive-lazy-loading: false        logImpl: org.apache.ibatis.logging.stdout.StdOutImpl     mapUnderscoreToCamelCase: true

以上配置請查看官方文檔說明:

分頁配置:

怎么在SpringBoot中整合MyBatis定義Mapper

mybatis配置:

怎么在SpringBoot中整合MyBatis定義Mapper

啟動類添加Mapper掃描

@SpringBootApplication @MapperScan({"com.pack.mapper"}) public class SpringBootMyBatisApplication {    public static void main(String[] args) {     SpringApplication.run(SpringBootMyBatisApplication.class, args);   }  }

添加@MapperScan注解后,就不需要在每個Mapper上添加@Mapper注解了。

核心處理類:

MapperScannerRegistrar.java

public class MapperScannerRegistrar implements ImportBeanDefinitionRegistrar, ResourceLoaderAware { }

ImportBeanDefinitionRegistrar類的主要功能就是用來動態注冊Bean的。很多的第三方庫都是通過實現該接口來動態注冊Bean,比如EnableFeignClients用來掃描指定包下所有類上帶有@FeignClient注解的類。

ImportBeanDefinitionRegistrar需要結合ClassPathBeanDefinitionScanner使用ClassPathBeanDefinitionScanner用來掃描那些類需要被動態注冊為Bean。比如Mybatis中使用AutoConfiguredMapperScannerRegistrar來動態注冊具有@Mapper注解的類。

Mapper接口定義

public interface UsersMapper {        /**    *  <p>查詢所有數據</p>    *  <p>時間:2021年4月21日-上午9:18:54</p>    * @author xg    * @return List<Users>    */   @Select("SELECT * FROM t_users")   @Results(id = "users", value = {@Result(property = "name", column = "name", javaType = String.class),    @Result(property = "password", column = "password")})   List<Users> findAll() ;        /**    *  <p>根據主鍵ID查詢</p>    *  <p>時間:2021年4月21日-上午9:19:34</p>    * @author xg    * @param id 主鍵ID    * @return Users    */   @Select("SELECT * FROM t_users WHERE id = #{id}")   @ResultMap("users")   Users findById(String id) ;        /**    *  <p>保存數據</p>    *  <p>時間:2021年4月21日-上午9:21:14</p>    * @author xg    * @param users    * @return int 影響行數    */   @Insert("insert into t_users values(#{id}, #{password}, #{username})")   int saveUsers(Users users) ;        /**    *  <p>更新數據</p>    *  <p>時間:2021年4月21日-上午9:22:19</p>    * @author xg    * @param users    * @return int 影響行數    */   @Update("UPDATE t_users SET username = #{username}, password = #{password} WHERE id = #{id}")   int updateUsers(Users users) ;        /**    *  <p>根據主鍵ID刪除</p>    *  <p>時間:2021年4月21日-上午9:23:36</p>    * @author xg    * @param id 主鍵ID    * @return int 影響行數    */   @Delete("DELETE FROM t_users where id = #{id}")   int deleteById(String id) ;        /**    *  <p>通過SelectProvider實現動態SQL語句查詢</p>    *  <p>時間:2021年5月21日-上午9:30:00</p>    * @author xg    * @param users    * @return List<Users>    */   @SelectProvider(type = UsersProvider.class, method = "selectLikeUsers")   @ResultMap("users")   List<Users> selectLikeUsers(Users users) ;        /**    *  <p>通過UpdateProvider實現動態SQL更新操作</p>    *  <p>時間:2021年5月21日-上午9:36:48</p>    * @author xg    * @param users    * @return int 影響行數   */   @UpdateProvider(type = UsersProvider.class, method = "updateByProvider")   int updateByProvider(@Param("users") Users users) ; }

說明:

@Results注解添加了id屬性后,在其他的方法中可以通過@ResultMap("users")來引用。

@*Provider用來動態的定義SQL語句。

public class UsersProvider {    public String selectLikeUsers(Users users) {     StringBuilder sql = new StringBuilder("SELECT * FROM t_users t where 1=1 ");       if(users.getUsername() != null && users.getUsername().trim().length() > 0) {          sql.append(String.format("and t.username like '%s'", "%" + users.getUsername() + "%"));       }     return sql.toString();     }        public String updateByProvider(@Param("users") Users users) {     SQL sql = new SQL() ;     sql.UPDATE("t_users")       .SET("username = #{users.username}", "password = #{users.password}")       .WHERE("id = #{users.id}") ;     return sql.toString() ;   }      }

 單元測試

@RunWith(SpringRunner.class) @SpringBootTest public class UsersMapperTest {        @Resource   private UsersMapper usersMapper ;        @Test   public void testFindAll() {     Page<Users> page = PageHelper.startPage(1, 2) ;     usersMapper.findAll() ;     System.out.println(page.getResult()) ;     System.out.println(page.getTotal() + "\n" + page.getPages()) ;   }        @Test   public void testFindById() {     System.out.println(usersMapper.findById("1")) ;   }        @Test   public void testSaveUsers() {     Users users = new Users() ;     users.setId("4") ;     users.setPassword("123456") ;     users.setUsername("zhangsan") ;     System.out.println(usersMapper.saveUsers(users)) ;   }        @Test   public void testUpdateUser() {     Users users = new Users() ;     users.setId("3") ;     users.setPassword("111111") ;     users.setUsername("zhangsan") ;     System.out.println(usersMapper.updateUsers(users)) ;   }        @Test   public void testDeleteById() {     System.out.println(usersMapper.deleteById("3")) ;   }        @Test   public void testSelectLikeUsers() {     Users users = new Users() ;     users.setUsername("gu") ;     System.out.println(usersMapper.selectLikeUsers(users)) ;   }        @Test   public void testUpdateByProvider() {     Users users = new Users() ;     users.setId("2") ;     users.setPassword("111111") ;     users.setUsername("guest") ;     System.out.println(usersMapper.updateByProvider(users)) ;   }      }

以上就是怎么在SpringBoot中整合MyBatis定義Mapper,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

建瓯市| 静乐县| 安庆市| 大理市| 竹北市| 林芝县| 大新县| 南康市| 靖边县| 大英县| 敦化市| 滁州市| 枣阳市| 大同市| 莱阳市| 江华| 通化县| 饶平县| 景泰县| 嘉定区| 黎川县| 平果县| 保靖县| 祁阳县| 原阳县| 青州市| 泰州市| 鄂伦春自治旗| 青阳县| 凤阳县| 富裕县| 鄂尔多斯市| 六安市| 连南| 新龙县| 名山县| 扬州市| 乌兰县| 化州市| 湟源县| 泗水县|