我的開發環境java
java環境:Jdk1.8.0_60mysql
編譯器:IntelliJ IDEA 2017.1.4web
mysql驅動:mysql-connector-java-5.1.39.jar (用於你逆向工程使用)spring
Genarator 版本:mybatis-generator-maven-plugin (1.3.6)sql
源碼鏈接:待整理數據庫
<!--springBoot相關--> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.9.RELEASE</version> </parent> <!--約定版本--> <properties> <mybatis-spring-boot>1.2.0</mybatis-spring-boot> <mysql-connector>5.1.39</mysql-connector> </properties> <dependencies> <!--springBoot相關--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--mybatis相關--> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>${mybatis-spring-boot}</version> </dependency> <!--mysql驅動相關--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${mysql.version}</version> </dependency> <!--pojo實用小插件--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <!--依賴不傳遞--> <optional>true</optional> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <!-- mybatis generator 自動生成代碼插件 --> <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.3.6</version> <configuration> <configurationFile>${basedir}/src/main/resources/generator/generatorConfig.xml</configurationFile> <overwrite>true</overwrite> <verbose>true</verbose> </configuration> </plugin> </plugins> </build>
server: # 服務端口 port: 8083 spring: datasource: url: jdbc:mysql://localhost:3306/springcloud-mybatis username: root password: 123456 driver-class-name: com.mysql.jdbc.Driver # Mybatis 配置 mybatis: typeAliasesPackage: com.fame.entity mapperLocations: classpath:mapper/*.xml # 打印sql logging: level: # 配置mapper接口的包路徑 com.fame.mapper : debug
1)配置數據信息 2)修改相關包名 3)配置相關表屬性springboot
<?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> <!--mysql 鏈接數據庫jar 這裏選擇本身本地位置--> <classPathEntry location="D:/mysql-connector-java-5.1.39.jar" /> <context id="testTables" targetRuntime="MyBatis3"> <commentGenerator> <!-- 是否去除自動生成的註釋 true:是 : false:否 --> <property name="suppressAllComments" value="true" /> </commentGenerator> <!--數據庫鏈接的信息:驅動類、鏈接地址、用戶名、密碼 --> <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/springcloud-mybatis" userId="root" password="123456"> </jdbcConnection> <!-- 默認false,把JDBC DECIMAL 和 NUMERIC 類型解析爲 Integer,爲 true時把JDBC DECIMAL 和 NUMERIC 類型解析爲java.math.BigDecimal --> <javaTypeResolver> <property name="forceBigDecimals" value="true" /> </javaTypeResolver> <!-- targetProject:生成PO類的位置 --> <javaModelGenerator targetPackage="com.fame.entity" targetProject="src/main/java"> <!-- enableSubPackages:是否讓schema做爲包的後綴 --> <property name="enableSubPackages" value="false" /> <!-- 從數據庫返回的值被清理先後的空格 --> <property name="trimStrings" value="true" /> </javaModelGenerator> <!-- targetProject:mapper映射文件生成的位置 若是maven工程只是單獨的一個工程,targetProject="src/main/java" 若果maven工程是分模塊的工程,targetProject="所屬模塊的名稱",例如: targetProject="ecps-manager-mapper",下同--> <sqlMapGenerator targetPackage="com.fame.mapper" targetProject="src/main/java"> <!-- enableSubPackages:是否讓schema做爲包的後綴 --> <property name="enableSubPackages" value="false" /> </sqlMapGenerator> <!-- targetPackage:mapper接口生成的位置 --> <javaClientGenerator type="XMLMAPPER" targetPackage="com.fame.mapper" targetProject="src/main/java"> <!-- enableSubPackages:是否讓schema做爲包的後綴 --> <property name="enableSubPackages" value="false" /> </javaClientGenerator> <!-- 指定數據庫表 ,設置是否要生成Exemple方法--> <table tableName="tb_user" schema="" enableCountByExample="false" enableDeleteByExample="false" enableUpdateByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"> <!--去除代表前綴tb_,注意嚴格控制大小寫--> <domainObjectRenamingRule searchString="^Tb" replaceString="" /> <!--去除列字段前綴,注意嚴格控制大小寫--> <columnRenamingRule searchString="^sys" replaceString=""/> </table> </context> </generatorConfiguration>
<?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> <!--mysql 鏈接數據庫jar 這裏選擇本身本地位置--> <classPathEntry location="D:/mysql-connector-java-5.1.39.jar" /> <context id="testTables" targetRuntime="MyBatis3"> <commentGenerator> <!-- 是否去除自動生成的註釋 true:是 : false:否 --> <property name="suppressAllComments" value="true" /> </commentGenerator> <!--數據庫鏈接的信息:驅動類、鏈接地址、用戶名、密碼 --> <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/springcloud-mybatis" userId="root" password="123456"> </jdbcConnection> <!-- 默認false,把JDBC DECIMAL 和 NUMERIC 類型解析爲 Integer,爲 true時把JDBC DECIMAL 和 NUMERIC 類型解析爲java.math.BigDecimal --> <javaTypeResolver> <property name="forceBigDecimals" value="true" /> </javaTypeResolver> <!-- targetProject:生成PO類的位置 --> <javaModelGenerator targetPackage="com.fame.entity" targetProject="src/main/java"> <!-- enableSubPackages:是否讓schema做爲包的後綴 --> <property name="enableSubPackages" value="false" /> <!-- 從數據庫返回的值被清理先後的空格 --> <property name="trimStrings" value="true" /> </javaModelGenerator> <!-- targetProject:mapper映射文件生成的位置 若是maven工程只是單獨的一個工程,targetProject="src/main/java" 若果maven工程是分模塊的工程,targetProject="所屬模塊的名稱",例如: targetProject="ecps-manager-mapper",下同--> <sqlMapGenerator targetPackage="com.fame.mapper" targetProject="src/main/java"> <!-- enableSubPackages:是否讓schema做爲包的後綴 --> <property name="enableSubPackages" value="false" /> </sqlMapGenerator> <!-- targetPackage:mapper接口生成的位置 --> <javaClientGenerator type="XMLMAPPER" targetPackage="com.fame.mapper" targetProject="src/main/java"> <!-- enableSubPackages:是否讓schema做爲包的後綴 --> <property name="enableSubPackages" value="false" /> </javaClientGenerator> <!-- 指定數據庫表 ,設置是否要生成Exemple方法--> <table tableName="tb_user" schema="" enableCountByExample="false" enableDeleteByExample="false" enableUpdateByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"> <!--去除代表前綴tb_,注意嚴格控制大小寫--> <domainObjectRenamingRule searchString="^Tb" replaceString="" /> <!--去除列字段前綴,注意嚴格控制大小寫--> <columnRenamingRule searchString="^sys" replaceString=""/> </table> </context> </generatorConfiguration>
建立generator配置文件,啓動便可mybatis
點擊IDEA右側Maven Project 雙擊Plugins下的mybatis-generatorapp
其中,方式一配置好的文件,也能夠在Run Configurations雙擊啓動dom
注意
:生成的XXXMapper.xml,須要放到(src/main/resource)下.
緣由
:IDEA不編譯src的java目錄下的xml文件
若是是直接建立springboot項目可忽略這一步,我是直接建立的一個Maven項目進行整合。
注意
:加入註解@MapperScan進行mapper接口掃描
@SpringBootApplication // mapper 接口類掃描包配置 @MapperScan("com.fame.mapper") public class MybatisApplication { public static void main(String[] args) { SpringApplication.run(MybatisApplication.class, args); } }
這樣就整合完成,能夠建立接口進行單元測試了
/** * mybatis generator逆向工程 新增測試 * * @param user 用戶信息 */ @PostMapping("/add") public void add(@RequestBody User user) { // 直接新增 userMapper.insert(user); // 新增會作非空判斷 userMapper.insertSelective(user); }
/** * mybatis generator逆向工程 查詢測試 * * @param userId 用戶ID */ @PutMapping("/update") public void update(Long userId) { User user = userMapper.selectByPrimaryKey(userId); // 經過ID 修改 user.setUsername("大白generator 測試修改操做"); // updateByPrimaryKey 全修改 userMapper.updateByPrimaryKey(user); // updateByPrimaryKeySelective 選擇user對象不爲null 的修改 userMapper.updateByPrimaryKeySelective(user); // 使用Example Criteria 經過關鍵字修改 UserExample userEmp = new UserExample(); userEmp.or().andIdEqualTo(userId); // updateByExample 全修改 userMapper.updateByExample(user, userEmp); // updateByExampleSelective 選擇user對象不爲null 的修改 userMapper.updateByExampleSelective(user, userEmp); }
/** * mybatis generator逆向工程 查詢測試 * * @param userId 用戶ID */ @DeleteMapping("/delete") public void delete(Long userId) { // 經過ID 刪除 userMapper.deleteByPrimaryKey(userId); // 使用Example Criteria 經過關鍵字刪除 UserExample userEmp = new UserExample(); userEmp.or().andIdEqualTo(userId); userMapper.deleteByExample(userEmp); }
/** * mybatis generator逆向工程 查詢測試 * * @param userId 用戶ID */ @GetMapping("/get") public void get(Long userId) { // 經過主鍵ID 獲取用戶信息 User user = userMapper.selectByPrimaryKey(userId); System.out.println(user); // 經過example Criteria 查詢 // where id = ? UserExample userEmp = new UserExample(); userEmp.or().andIdEqualTo(userId); List<User> users1 = userMapper.selectByExample(userEmp); System.out.println(users1.get(0)); userEmp.clear(); // where ( id = ? and username =? ) or ( id = ? and age =? ) userEmp.or().andIdEqualTo(userId).andUsernameEqualTo("大白1"); userEmp.or().andIdEqualTo(userId).andAgeEqualTo(22); List<User> users2 = userMapper.selectByExample(userEmp); System.out.println(users2.get(0)); }
/** * mybatis generator逆向工程 合計測試 */ @GetMapping("/count") public void count(){ // 查詢所有數據 long countAll = userMapper.countByExample(new UserExample()); System.out.println(countAll); // 查詢知足條件的數據 UserExample userEmp = new UserExample(); userEmp.or().andIdEqualTo(1L); long countByKey = userMapper.countByExample(userEmp); System.out.println(countByKey); }