SpringBoot項目中MybatisPlus的使用(二)

本文主要內容:

  • 自動生成代碼(新)
  • Wrapper的使用

本文在SpringBoot項目中MybatisPlus的使用一文基礎上修改,升級爲springboot的2.1.0.RELEASE版本。

一、自動生成代碼

1、mysql數據庫

SpringBoot項目中MybatisPlus的使用中已經有了詳細的說明,但是在springboot的2.1.0.RELEASE版本下會報錯,需要修改以下內容:

  • pom文件中mysql依賴:
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
		</dependency>
  • 修改CodeGenerator中數據源配置(主要是驅動名稱變化):
        // 數據源配置
        DataSourceConfig dsc = new DataSourceConfig();
        dsc.setUrl("jdbc:mysql://localhost:3306/frog?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=GMT");
        dsc.setDriverName("com.mysql.cj.jdbc.Driver");
        dsc.setUsername("root");
        dsc.setPassword("123456");
2、orcale數據庫

orcale的驅動一直下載不下載,於是從其他渠道複製了一個jar包,需要安裝到本地maven倉庫。

  • 複製jar包到本機,爲了方便我直接放在maven\bin目錄下:
    在這裏插入圖片描述
  • 在bin目錄下打開cmd,執行安裝命令:
mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc7 -Dversion=12.1.0.1 -Dpackaging=jar -Dfile=ojdbc7-12.1.0.1.jar
  • 打開maven本地倉庫查看已經完成:
    在這裏插入圖片描述
  • 在pom文件中引入:
		<dependency>
			<groupId>com.oracle</groupId>
			<artifactId>ojdbc7</artifactId>
			<version>12.1.0.1</version>
		</dependency>
  • 修改CodeGenerator中數據源配置:
	    DataSourceConfig dsc = new DataSourceConfig();
		dsc.setUrl("jdbc:oracle:thin:@localhost:1521/frog");
        dsc.setDriverName("oracle.jdbc.OracleDriver");
        dsc.setUsername("frog");
        dsc.setPassword("frog123456");

二、Wrapper的使用(v3.0.1以上)

熟練的使用Wrapper能夠減少xml中簡單sql語句的重複編寫,很大程度上節約了開發時間。例如:

1、全表掃描(參數爲null):
    @Autowired
    private FrogMapper frogMapper;

    public void test() {
        Integer count = frogMapper.selectCount(null);
    }

SELECT COUNT(1) FROM frog

2、WHERE條件:
	QueryWrapper<Frog> wrapper = new QueryWrapper<>();
    wrapper.eq("id", 1);
    wrapper.ge("size", 5.1);
    Integer count = frogMapper.selectCount(wrapper);

Preparing: SELECT COUNT(1) FROM frog WHERE id = ? AND size >= ?
Parameters: 1(Integer), 5.1(Double)

下面羅列了常用的where條件(源碼中都有註釋,可以下載查看):

方法 含義 sql
eq 等於 =
ne 不等於 <>
gt 大於 >
lt 小於 <
ge 大於等於 >=
le 小於等於 <=
between BETWEEN 值1 AND 值2 BETWEEN … AND …
like LIKE ‘%值%’ LIKE
likeLeft LIKE ‘%值’ LIKE ‘%…’
isNull 字段 IS NULL IS NULL
in 字段 IN (value.get(0), value.get(1), …) IN (a,b,…)
orderBy 排序:ORDER BY 字段, … order by
groupBy 分組:GROUP BY 字段, … group by
having HAVING ( sql語句 ) having
3、AND 和 OR

按以上方式組成where條件語句默認都是and邏輯關係,如果是以下條件關係就需要稍作改動。

  • SQL 1:

Preparing: SELECT COUNT(1) FROM frog WHERE id = ? OR size >= ? AND name LIKE ?
Parameters: 1(Integer), 5.1(Double), a%(String)

		QueryWrapper<Frog> wrapper = new QueryWrapper<>();
        wrapper.eq("id", 1);
        wrapper.or();
        wrapper.ge("size", 5.1);
        wrapper.likeRight("name", "a");
        Integer count = frogMapper.selectCount(wrapper);
  • SQL 2:

Preparing: SELECT COUNT(1) FROM frog WHERE id = ? OR ( size >= ? AND name LIKE ? ) AND name LIKE ?
Parameters: 1(Integer), 5.1(Double), b%(String), a%(String)

		QueryWrapper<Frog> wrapper = new QueryWrapper<>();
        wrapper.eq("id", 1);
        wrapper.or(t -> t.ge("size", 5.1).likeRight("name","b"));
        wrapper.likeRight("name", "a");
        Integer count = frogMapper.selectCount(wrapper);
4、使用apply構造複雜SQL

複雜sql可以使用apply方法拼接,但是不推薦這麼寫,最好還是寫在xml更容易閱讀,另外還是sql注入的風險。

		QueryWrapper<Frog> wrapper = new QueryWrapper<>();
        wrapper.in("color", "red","blue","yellow");
        wrapper.apply("size = (select max(size) from frog group by color)");
        Integer count = frogMapper.selectCount(wrapper);

Preparing: SELECT COUNT(1) FROM frog WHERE color IN (?,?,?) AND size = (select max(size) from frog group by color)
Parameters: red(String), blue(String), yellow(String)

5、lambda表達式寫法
		QueryWrapper<Frog> wrapper = new QueryWrapper<>();
        wrapper.lambda().eq(Frog::getColor, "green")
                .ge(Frog::getSize, 5.2);
        Integer count = frogMapper.selectCount(wrapper);

SELECT COUNT(1) FROM frog WHERE color = ? AND size >= ?
Parameters: green(String), 5.2(Double)

三、總結

本篇主要對mybatisplus代碼生成功能中mysql和orcale數據源配置的完善,以及使用wrapper構建簡單sql語句常用方法進行總結,因爲開發中經常使用,即使簡單也值得記錄。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章