摘要:主要有兩種解決方案,一種是使用注解解決一切問題,一種是簡化后的老傳統(tǒng)。新建項目默認(rèn)為,直接改為,另外新增一個用戶不同環(huán)境使用不同的配置文件用。配置指定配置文件為配置開啟駝峰命名轉(zhuǎn)換,如。
倉庫地址:spring-boot-learning
歡迎star、fork,給作者一些鼓勵
前言
Mybatis 初期使用比較麻煩,需要各種配置文件、實體類、Dao 層映射關(guān)聯(lián)、還有一大推其它配置。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 這么火熱也開發(fā)出一套解決方案來湊湊熱鬧,但這一湊確實解決了很多問題,使用起來確實順暢了許多。mybatis-spring-boot-starter主要有兩種解決方案,一種是使用注解解決一切問題,一種是簡化后的老傳統(tǒng)。
當(dāng)然任何模式都需要首先引入mybatis-spring-boot-starter的 Pom 文件,現(xiàn)在最新版本是 2.0.1
org.mybatis.spring.boot mybatis-spring-boot-starter 2.0.1
我一般使用的是XML極簡模式,可能是由于之前用的hibernate用習(xí)慣了
極簡 xml 版本極簡 xml 版本保持映射文件的老傳統(tǒng),接口層只需要定義空方法,系統(tǒng)會自動根據(jù)方法名在映射文件中找對應(yīng)的 Sql .
1 添加相關(guān) 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相關(guān)配置推薦使用application.yml進(jìn)行配置,其實使用application.yml或者application.properties都是一樣的效果,application.yml最終是轉(zhuǎn)換為application.properties進(jìn)行生效的,只不過application.yml視覺效果看起來更加明了。新建項目默認(rèn)為application.properties,直接改為application.yml,另外新增一個application-test.yml用戶不同環(huán)境使用不同的配置文件用。
application.yml配置:
#指定配置文件為test spring: profiles: active: test #配置Mybatis mybatis: type-aliases-package: com.niaobulashi.entity mapper-locations: classpath:mapper/*.xml configuration: # 開啟駝峰命名轉(zhuǎn)換,如:Table(create_time) -> Entity(createTime)。不需要我們關(guān)心怎么進(jìn)行字段匹配,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.* 相關(guān)配置,數(shù)據(jù)源就會自動注入到 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; //狀態(tài) 0:禁用 1:正常 private Integer status; //創(chuàng)建時間 private Date createTime; }4、添加 User 的映射文件
其實就是把上個版本中 Mapper 的 Sql 搬到了這里的 xml 中了
5、編寫 Mapper 層的代碼public interface SysUserDao { /** * 根據(jù)userId查詢用戶信息 * @param userId 用戶ID */ List6、編寫Service層的代碼queryUserInfo(Long userId); }
SysUserService接口類:
public interface SysUserService { /** * 查詢用戶的所有菜單ID */ ListqueryUserInfo(Long userId); }
SysUserServiceImpl實現(xiàn)類:
@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); } }
經(jīng)過上面5個步驟就可以完成基本的接口開發(fā),省去了Controller層的開發(fā)
@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最后項目目錄結(jié)構(gòu) 總結(jié)list = sysUserService.queryUserInfo(userEntity.getUserId()); logger.info("list:" + list); } }
SpringBoot和Mybatis這對CP,完美
示例代碼-github
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/75491.html
摘要:本文章的源碼再文章末尾什么是查詢緩存有一級緩存和二級緩存。默認(rèn)開啟一級緩存。證明了一級緩存只是在數(shù)據(jù)庫會話內(nèi)部共享的。但是,整合到中后,一級緩存就會被關(guān)閉。根據(jù)時間表比如沒有刷新間隔緩存不會以任何時間順序來刷新。 倉庫地址:spring-boot-learning歡迎star、fork,給作者一些鼓勵 學(xué)習(xí)SpringBoot集成Mybatis的第二章,了解到Mybatis自帶的緩存機...
摘要:本文章的源碼再文章末尾什么是查詢緩存有一級緩存和二級緩存。默認(rèn)開啟一級緩存。證明了一級緩存只是在數(shù)據(jù)庫會話內(nèi)部共享的。但是,整合到中后,一級緩存就會被關(guān)閉。根據(jù)時間表比如沒有刷新間隔緩存不會以任何時間順序來刷新。 倉庫地址:spring-boot-learning歡迎star、fork,給作者一些鼓勵 學(xué)習(xí)SpringBoot集成Mybatis的第二章,了解到Mybatis自帶的緩存機...
摘要:本文章的源碼再文章末尾什么是查詢緩存有一級緩存和二級緩存。默認(rèn)開啟一級緩存。證明了一級緩存只是在數(shù)據(jù)庫會話內(nèi)部共享的。但是,整合到中后,一級緩存就會被關(guān)閉。根據(jù)時間表比如沒有刷新間隔緩存不會以任何時間順序來刷新。 學(xué)習(xí)SpringBoot集成Mybatis的第二章,了解到Mybatis自帶的緩存機制,在部署的時候踩過了一些坑。在此記錄和分享一下Mybatis的緩存作用。 本文章的源碼再...
閱讀 3205·2021-09-06 15:02
閱讀 2250·2019-08-30 15:48
閱讀 3448·2019-08-29 11:08
閱讀 3291·2019-08-26 13:55
閱讀 2453·2019-08-26 13:35
閱讀 3168·2019-08-26 12:11
閱讀 2607·2019-08-26 11:48
閱讀 891·2019-08-26 11:42