一、前言
今天要啟動一個新項目,准備搭建基礎結構,想來mybatis-plus是肯定要上的,springboot也是異常方便,心里想着先搞好結構然后就咔咔把一通攔截器之類直接cv就結束了,沒想到又被自己坑了,關鍵這個坑上次配項目的時候就踩過,於是這篇隨筆就這樣誕生了,下次就可以給我的豬腦子提個醒,省的再浪費時間找問題了。
二、mybatis-plus配置
既然寫都寫了,那干脆就來一個完整配置記錄好了。
首先在創建的項目pom文件中添加maven依賴,如下:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.2</version>
</dependency>
然后在application配置文件填上連接mysql的配置項,大致如下:
spring.datasource.password=
spring.datasource.username=
spring.datasource.url=
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
在不添加額外連接池的配置時,spring直接默認使用hikariCP,內置了一套默認配置,hikari好東西,大家都懂。
再然后可以在啟動添加@MapperScan並且填上掃描dao接口的包路徑,當然也可以不寫,在后面從創建的每一個dao接口都加上@Mapper效果也是一樣的,就是每個都加太麻煩,人嘛當然是能懶則懶,關鍵懶的也不失優雅就行。
接下來准備一些測試dao接口,以及表和實體類:
public class TestTable {
@TableId//主鍵名為id是可省略
private Integer id;
private String name;
private Integer age;
//省略getter,setter
}
@Mapper //配置@MapperScan后可省略
public interface TestDao extends BaseMapper<TestTable> {
TestTable getTest();
}
配置到這里已經可以正常使用mybatis-plus封裝好的各種基礎查詢以及QueryWrapper 功能了。
三、自定義sql,xml
針對業務比較復雜的B端系統來說,上面的簡單查詢是肯定不夠用的,那么這時候是難免要使用xml格式的sql配置了,洋洋灑灑上百行一句的sql肯定是不可能用@Select注解一類的去書寫的。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.example.demo.dao.TestDao">
<select id="getTest" reslutType="com.example.demo.domain.TestTable">
<!-- 此處省略sql -->
</select>
</mapper>
按照常規書寫xml就行行了,最關鍵的配置是下面一項:
#具體路徑是項目實際路徑確定,下面展示的是starer包默認配置
mybatis-plus.mapper-locations=classpath*:/mapper/*/*.xml
最坑的地方來了:在idea中創建resources下面的文件夾時,千萬不能“偷懶”,像創建類一樣用xx.xx.xx的方式快速創建包結構。
就這樣一個結構,如果你直接mybatis.mapper建立的文件夾,那你完了。這跟先創建mybatis,再創建mapper用肉眼凡胎是指定看不出什么區別了。
但是“幸運”的是,項目啟動以后,在你調用sql的時候,系統會親切的用一個Invalid bound statement (not found) 問候你。
呵呵,接下來就是我下午的百思不得其解了,當然下午有點頭疼狀態不佳,到了晚上突然就頓悟了想起來上次搭建項目就是這么被玩的。
就這樣把,哎,希望能幫到有緣人~~(其實是提醒自己下次別再呵呵。。。)