1. 程式人生 > >mybatis-generator與pagehelper

mybatis-generator與pagehelper

mybatis-generator

在公司專案中,架構提供了一些基本的mybatis,然後自己查看了一下,貌似構架集成了generator。所以自己就研究了一下。(我們這裡使用的spring boot) 接下來介紹如何使用 1.下載外掛 在help -eclipse marketplace中搜索Mybatis Generator,然後安裝。如果安裝失敗可以換個工作空間重啟一波試試。

在這裡插入圖片描述

2.在pom檔案中加入依賴。版本可以去官網瞅瞅。

<dependency>
			<groupId>org.mybatis.generator</groupId>
			<artifactId>mybatis-generator-core</artifactId>
			<version>1.3.2</version>
</dependency>

<!--新增配置檔案的位置 需要手動新增-->
<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
					<!-- mybatis用於生成程式碼的配置檔案 -->
					<configurationFile>src/main/resources/generatorConfig.xml</configurationFile>
					<verbose>true</verbose>
					<overwrite>true</overwrite>
				</configuration>
			</plugin>
		</plugins>
	</build>

3.建立一個mvc專案或者是boot專案。然後建立好各個層的包,下面是我的包結構。 在這裡插入圖片描述 4.在資料庫中新建表(隨便建立。。。不用我多說),然後在entity中建立好關於這個表的pojo。這時候準備工作就做完啦. 5.這時我們新建generator的配置檔案generatorConfig.xml檔案(我放在了resourses中,我理解是隨便放置,但是配置檔案一般都放在這裡面)然後編寫配置檔案。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
	<context id="context1">
		<!-- 連結資料庫 -->
		<jdbcConnection connectionURL="jdbc:mysql://localhost:3306/mysql"
			driverClass="com.mysql.jdbc.Driver" password="root" userId="root" />
		<!-- 預設false,把JDBC DECIMAL 和 NUMERIC 型別解析為 Integer,為 true時把JDBC DECIMAL 
			和 NUMERIC 型別解析為java.math.BigDecimal -->
		<javaTypeResolver>
			<property name="forceBigDecimals" value="false" />
		</javaTypeResolver>
		<!-- 查詢po的所在位置,targetPackage是com後的路徑,而 targetProject是com前的路徑,按照這個格式配置就可以 -->
		<javaModelGenerator targetPackage="com.example.demo.entity"
			targetProject="generator/src/main/java" />
		<!-- 配置生成mapper的所在位置 -->
		<sqlMapGenerator targetPackage="mapper"
			targetProject="generator/src/main/resources" />
		<!-- 配置生成dao的所在位置 -->
		<javaClientGenerator targetPackage="com.example.demo.dao"
			targetProject="generator/src/main/java" type="XMLMAPPER" />
		<table tableName="city">
		</table>
	</context>
</generatorConfiguration>

以上就是簡單的入門配置,一看就懂。 6.按照配置檔案生成。右鍵generatorConfig.xml,點選run as -run mybatis-generator(就是那個小企鵝。。。)之後就會生成了。這可比自己寫一套方便多了。如果生成的不滿足需求,可以在生成的檔案中修改和新增。 在這裡插入圖片描述

pagehelper

既然生成了一波,那麼不跑著玩一玩就對不起費的力氣了。那麼問題又來了,怎麼分頁呢。咱們可以在sql裡面拼接limit,但是這樣是不是有點low,所以我又訪問了一下偉大的百度,又知道了一個外掛pagehelper,那麼下面介紹一下pagehelper。 1.首先在pom檔案中加入依賴。同理版本方面可以訪問官網。

https://pagehelper.github.io/ 同時裡面還有官方文件,想仔細研究的大佬可以去瞧瞧。

<dependency>
			<groupId>com.github.pagehelper</groupId>
			<artifactId>pagehelper</artifactId>
			<version>4.1.6</version>
</dependency>

2.編寫controller層和service層 service如下,很簡單的查詢,使用了剛才generator生成的selectbyid方法,我們只需要傳入兩個引數currentPage和pageSize,用過分頁的應該都知道,分別是當前頁和每頁的條數,然後在PageHelper.startPage(currentPage, pageSize);就ok了

package com.example.demo.service;

@Service
public class CityService {
	@Autowired
	CityMapper cityMapper;

	public List<City> findItemByPage(int currentPage, int pageSize, int id) {
		PageHelper.startPage(currentPage, pageSize);
		List<City> list = cityMapper.selectById(id);
		return list;
	}
}

3.編寫controller層,很簡單,沒啥說的,直接掉service就完事了。

@RestController
@RequestMapping("/selectcity")
public class CityController {

	@Autowired
	CityService cityService;
	
	@RequestMapping("/select2")
	@ResponseBody
	public List<City> selectById(@Param("currentPage") int currentPage,@Param("pageSize") int pageSize,@Param("id") int id) {

		return cityService.findItemByPage(currentPage, pageSize, id);
	}
}

4.配置xxGeneratorApplication.java,新增下面程式碼,下面引數在官方文件中都有大家可以自己去看(中文文件很簡單),地址 https://pagehelper.github.io/docs/howtouse/

// 配置mybatis的分頁外掛pageHelper
	@Bean
	public PageHelper pageHelper() {
		PageHelper pageHelper = new PageHelper();
		Properties properties = new Properties();
		properties.setProperty("offsetAsPageNum", "true");
		properties.setProperty("rowBoundsWithCount", "true");
		properties.setProperty("reasonable", "true");
		properties.setProperty("dialect", "mysql"); // 配置mysql資料庫的方言
		pageHelper.setProperties(properties);
		return pageHelper;
	}

然後我們直接呼叫介面就ok了,順便說一下pagehelper是一種物理分頁方式(拼接liimit到sql).所以效率是比較好的。