springboot專案底層整合jpa規範與mybatis
阿新 • • 發佈:2019-02-09
你我共知,jpa規範是基於hibernate的,對於單表操作的時候是非常的方便,但是對於多表操作的時候未免有點力不從心,於是在閒暇之餘,自己做了一個小小的測試,整合mybatis。當然整合jpa規範在上篇部落格中已經有了很詳細的解說。如果有想要了解的請看我的上篇部落格。
這篇部落格的前提是建立在上篇部落格的,於是那些個數據庫的配置我也就不強調了。
第一步,引入mybatis的相關jar
<!--====================mybatis基礎配置=============================================--> <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>6.0.6</version> </dependency> <!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.1</version> </dependency> <!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper --> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>5.1.2</version> </dependency>
接下來就是簡單的寫mapper的配置了。
不過這其中有個注意的小點就是在啟動類上面新增mapper的掃描。@MapperScan註解後面跟隨mapper檔案的具體位置。
緊接著就是寫Mapper介面。
public interface DemoMapper extends CrudRepository<Demo,Long>{ @Select("select * from Demo where name =#{name}") public List<Demo> findByName(String name); @Select("select * from Demo where id=#{id}") public Demo getById(long id); @Select("select name from Demo where id=#{id}") public String getNameById(long id); }
這個介面中繼承了Jpa規範中的CrudRepository介面,其次是使用@Select註解寫了一些額外的mybatis查詢介面。寫的比較簡單,只是做個示例。
這裡有個小小的坑,就是在命名介面的時候儘量用find這種常見的,其次By後面跟隨實體的屬性名,不要多也不要少,否則會有彩蛋的。
最後就是寫了一個很簡單的Controller來驗證它。
這樣底層就有了兩種,各取其長。@RestController @RequestMapping("/demo") public class DemoController { @Autowired private DemoMapper demoMapper; @RequestMapping("findByName") public List<Demo> findByName(String name){ return demoMapper.findByName(name); } @RequestMapping("add") public Integer add(){ Demo demo = new Demo(); demo.setName("demo"); demoMapper.save(demo); return demo.getId(); } }