標籤:generate config cat pass selectall gen XML 條件 id自增
前提條件:已經整合mybatis
代碼產生步驟:
- 添加依賴
<dependency> <groupId>tk.mybatis</groupId> <artifactId>mapper-spring-boot-starter</artifactId> <version>1.1.4</version></dependency><dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>1.3.6</version></dependency>
- 建立一個擁有main方法的類,代碼如下
package com.ghaien.generator;import org.mybatis.generator.api.MyBatisGenerator;import org.mybatis.generator.config.Configuration;import org.mybatis.generator.config.xml.ConfigurationParser;import org.mybatis.generator.internal.DefaultShellCallback;import sun.nio.cs.Surrogate.Generator;import java.util.ArrayList;import java.util.List;public class GeneratorMain { /** * 代碼產生器 * @param args * @throws Exception */ public static void main(String[] args) throws Exception { List<String> warnings = new ArrayList<>(); boolean overwrite = true; ConfigurationParser cp = new ConfigurationParser(warnings); Configuration config = cp.parseConfiguration( Generator.class.getResourceAsStream("/generator/generatorConfig.xml")); DefaultShellCallback callback = new DefaultShellCallback(overwrite); MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings); myBatisGenerator.generate(null); }}
- 在上面代碼中對應的目錄下建立generatorConfig.xml設定檔
<?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="Mysql" targetRuntime="MyBatis3Simple" defaultModelType="flat"> <plugin type="tk.mybatis.mapper.generator.MapperPlugin"> <property name="mappers" value="tk.mybatis.mapper.common.Mapper"/> <!-- caseSensitive預設false,當資料庫表名區分大小寫時,可以將該屬性設定為true --> <property name="caseSensitive" value="true"/> </plugin> <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/test" userId="root" password="1234"> </jdbcConnection> <!--產生的實體類的儲存路徑和包名--> <javaModelGenerator targetPackage="com.ghaien.dao.pojo.vo"
targetProject="E:\document\IdeaProjects\spring-boot-demo\src\main\java"/> <!--產生的*Mapper.xml檔案的儲存位置--> <sqlMapGenerator targetPackage="mapper"
targetProject="E:\document\IdeaProjects\spring-boot-demo\src\main\resources"/> <!--產生的*Mapper.java檔案的儲存位置和包名--> <javaClientGenerator targetPackage="com.ghaien.dao.mapper"
targetProject="E:\document\IdeaProjects\spring-boot-demo\src\main\java" type="XMLMAPPER" /> <!--對應資料庫中表名(可以使用"%" 對應所有表)--> <table tableName="user" > <!--該表有一個id自增的主鍵,在產生實體類的時候會根據該配置產生相應的註解--> <generatedKey column="id" sqlStatement="Mysql" identity="true"/> </table> </context></generatorConfiguration>
以上配置可根據具體的需求進行配置
- 執行main方法
整合步驟:
- 添加依賴
<dependency> <groupId>tk.mybatis</groupId> <artifactId>mapper-spring-boot-starter</artifactId> <version>1.1.4</version></dependency><dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.2.1</version></dependency>
- application.properties中增加如下配置
##mapper##mappers 多個介面時逗號隔開mapper.mappers=com.ghaien.utils.mapper.BaseMappermapper.not-empty=falsemapper.identity=MYSQL###pagehelperpagehelper.helperDialect=mysqlpagehelper.reasonable=truepagehelper.supportMethodsArguments=truepagehelper.params=count=countSql
- 將產生的*Mapper.xml檔案移動到application.properties中mybatis.mapperLocations對用的目錄下,隨意移動產生的實體類位置
- 建立BaseMapper(命名隨意)介面,位置跟設定檔中的mapper.mappers對應,代碼如下
package com.ghaien.utils.mapper;import tk.mybatis.mapper.common.Mapper;import tk.mybatis.mapper.common.MySqlMapper;public interface BaseMapper<T> extends Mapper<T>, MySqlMapper<T> {}修改產生的*Mapper.java檔案,使其繼承BaseMapper,並移動到@MapperScan能掃描到的路徑下,代碼如下
package com.ghaien.dao.mapper;import com.ghaien.dao.pojo.vo.User;import org.apache.ibatis.annotations.Param;import tk.mybatis.mapper.common.BaseMapper;public interface UserMapper extends BaseMapper<User> { /** * 測試UserMapper.xml檔案路徑是否正確 * @param id * @return */ User queryById(@Param("id") Long id);}注意:BaseMapper不能被@MapperScan掃描到
- 測試是否成功整合,代碼如下
package com.ghaien.dao.mapper;import com.ghaien.dao.pojo.vo.User;import com.github.pagehelper.Page;import com.github.pagehelper.PageHelper;import org.junit.Test;import org.junit.runner.RunWith;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.test.context.junit4.SpringRunner;import java.util.List;/** * Created by ghaien on 2018/1/29. */@SpringBootTest@RunWith(SpringRunner.class)public class UserMapperTest { @Autowired private UserMapper userMapper; private Logger log = LoggerFactory.getLogger(this.getClass()); @Test public void testQueryByPage() {// PageHelper.startPage(2, 1);// List<User> users = userMapper.selectAll();// for (User user : users) {// log.info("userName = " + user.getUserName());// } Page<User> page = PageHelper.startPage(2, 1).doSelectPage(() -> { userMapper.selectAll(); }); for (User user : page) { log.info("userName = " + user.getUserName()); } }}以上兩種方法最後輸出的結果是一致的,若想查看sql語句只需在設定檔中增加如下配置即可
logging.level.com.ghaien.dao=debug
完整代碼
spring-boot整合PageHelper和通用Mapper