摘要:主要有兩種解決方案,一種是使用注解解決一切問題,一種是簡化后的老傳統。新建項目默認為,直接改為,另外新增一個用戶不同環境使用不同的配置文件用。配置指定配置文件為配置開啟駝峰命名轉換,如。
倉庫地址:spring-boot-learning
歡迎star、fork,給作者一些鼓勵
前言
Mybatis 初期使用比較麻煩,需要各種配置文件、實體類、Dao 層映射關聯、還有一大推其它配置。mybatis-spring-boot-starter 就是 Spring Boot+ Mybatis 可以完全注解不用配置文件,也可以簡單配置輕松上手。
mybatis-spring-boot-starter官方說明:MyBatis Spring-Boot-Starter will help you use MyBatis with Spring Boot
其實就是 Mybatis 看 Spring Boot 這么火熱也開發出一套解決方案來湊湊熱鬧,但這一湊確實解決了很多問題,使用起來確實順暢了許多。mybatis-spring-boot-starter主要有兩種解決方案,一種是使用注解解決一切問題,一種是簡化后的老傳統。
當然任何模式都需要首先引入mybatis-spring-boot-starter的 Pom 文件,現在最新版本是 2.0.1
org.mybatis.spring.boot mybatis-spring-boot-starter 2.0.1
我一般使用的是XML極簡模式,可能是由于之前用的hibernate用習慣了
極簡 xml 版本極簡 xml 版本保持映射文件的老傳統,接口層只需要定義空方法,系統會自動根據方法名在映射文件中找對應的 Sql .
1 添加相關 Maven 文件org.mybatis.spring.boot mybatis-spring-boot-starter 2.0.1 mysql mysql-connector-java runtime org.projectlombok lombok true org.springframework.boot spring-boot-starter-test test
完整的 Pom 包這里就不貼了,大家直接看源碼
2、application.yml相關配置推薦使用application.yml進行配置,其實使用application.yml或者application.properties都是一樣的效果,application.yml最終是轉換為application.properties進行生效的,只不過application.yml視覺效果看起來更加明了。新建項目默認為application.properties,直接改為application.yml,另外新增一個application-test.yml用戶不同環境使用不同的配置文件用。
application.yml配置:
#指定配置文件為test spring: profiles: active: test #配置Mybatis mybatis: type-aliases-package: com.niaobulashi.entity mapper-locations: classpath:mapper/*.xml configuration: # 開啟駝峰命名轉換,如:Table(create_time) -> Entity(createTime)。不需要我們關心怎么進行字段匹配,mybatis會自動識別`大寫字母與下劃線` map-underscore-to-camel-case: true #打印SQL日志 logging: level: com.niaobulashi.dao: DEBUG
application-test.yml配置:
spring: datasource: url: jdbc:mysql://127.0.0.1:3306/test?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=true username: root password: root driver-class-name: com.mysql.cj.jdbc.Driver
Spring Boot 會自動加載 spring.datasource.* 相關配置,數據源就會自動注入到 sqlSessionFactory 中,sqlSessionFactory 會自動注入到 Mapper 中,對了,你一切都不用管了,直接拿起來使用就行了。
在啟動類中添加對 mapper 包掃描@MapperScan
@SpringBootApplication @MapperScan("com.niaobulashi.dao") public class MybatisApplication { public static void main(String[] args) { SpringApplication.run(MybatisApplication.class, args); } }
或者直接在 Mapper 類上面添加注解@Mapper,建議使用上面那種,不然每個 mapper 加個注解也挺麻煩的
3、添加 User 的實例@Data public class SysUserEntity implements Serializable { private static final long serialVersionUID = 1L; //用戶ID private Long userId; //用戶名 private String username; //密碼 private String password; //鹽 private String salt; //郵箱 private String email; //手機號 private String mobile; //狀態 0:禁用 1:正常 private Integer status; //創建時間 private Date createTime; }4、添加 User 的映射文件
其實就是把上個版本中 Mapper 的 Sql 搬到了這里的 xml 中了
5、編寫 Mapper 層的代碼public interface SysUserDao { /** * 根據userId查詢用戶信息 * @param userId 用戶ID */ List6、編寫Service層的代碼queryUserInfo(Long userId); }
SysUserService接口類:
public interface SysUserService { /** * 查詢用戶的所有菜單ID */ ListqueryUserInfo(Long userId); }
SysUserServiceImpl實現類:
@Service("sysUserService") public class SysUserServiceImpl implements SysUserService { @Resource private SysUserDao sysUserDao; /** * 查詢用戶的所有菜單ID * @param userId * @return */ @Override public List7、測試queryUserInfo(Long userId) { return sysUserDao.queryUserInfo(userId); } }
經過上面5個步驟就可以完成基本的接口開發,省去了Controller層的開發
@RunWith(SpringRunner.class) @SpringBootTest public class MabatisTest { private final static Logger logger = LoggerFactory.getLogger(MabatisTest.class); @Autowired private SysUserService sysUserService; @Test public void queryUserInfo() throws Exception { SysUserEntity userEntity = new SysUserEntity(); userEntity.setUserId(1L); List最后項目目錄結構 總結list = sysUserService.queryUserInfo(userEntity.getUserId()); logger.info("list:" + list); } }
SpringBoot和Mybatis這對CP,完美
示例代碼-github
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/75491.html
摘要:本文章的源碼再文章末尾什么是查詢緩存有一級緩存和二級緩存。默認開啟一級緩存。證明了一級緩存只是在數據庫會話內部共享的。但是,整合到中后,一級緩存就會被關閉。根據時間表比如沒有刷新間隔緩存不會以任何時間順序來刷新。 倉庫地址:spring-boot-learning歡迎star、fork,給作者一些鼓勵 學習SpringBoot集成Mybatis的第二章,了解到Mybatis自帶的緩存機...
摘要:本文章的源碼再文章末尾什么是查詢緩存有一級緩存和二級緩存。默認開啟一級緩存。證明了一級緩存只是在數據庫會話內部共享的。但是,整合到中后,一級緩存就會被關閉。根據時間表比如沒有刷新間隔緩存不會以任何時間順序來刷新。 倉庫地址:spring-boot-learning歡迎star、fork,給作者一些鼓勵 學習SpringBoot集成Mybatis的第二章,了解到Mybatis自帶的緩存機...
摘要:本文章的源碼再文章末尾什么是查詢緩存有一級緩存和二級緩存。默認開啟一級緩存。證明了一級緩存只是在數據庫會話內部共享的。但是,整合到中后,一級緩存就會被關閉。根據時間表比如沒有刷新間隔緩存不會以任何時間順序來刷新。 學習SpringBoot集成Mybatis的第二章,了解到Mybatis自帶的緩存機制,在部署的時候踩過了一些坑。在此記錄和分享一下Mybatis的緩存作用。 本文章的源碼再...
閱讀 3200·2021-09-06 15:02
閱讀 2247·2019-08-30 15:48
閱讀 3443·2019-08-29 11:08
閱讀 3285·2019-08-26 13:55
閱讀 2443·2019-08-26 13:35
閱讀 3165·2019-08-26 12:11
閱讀 2601·2019-08-26 11:48
閱讀 888·2019-08-26 11:42