您好,登錄后才能下訂單哦!
spring boot 使用通用 mapper 簡化開發(fā)
在使用 mybaits 時(shí)雖然有 mybatis generator 代碼自動(dòng)生成工具 但是還是有很多需要我們自己寫的 sql 所以就有了通用 mapper tk.mapper 簡化我們的開發(fā) 但是它也同樣不支持表聯(lián)合查詢,聯(lián)合查詢也需要我們自己編寫 sql
通用mapper 使用方法:
1 引入依賴:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.0.1</version>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>2.1.5</version>
</dependency>
<!-- 分頁插件-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.12</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
2.配置數(shù)據(jù)庫 和 mybaits 相關(guān)信息
spring:
datasource:
url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC+8
username: root
password: root
driver-class-name: com.mysql.jdbc.Driver
mapper:
notEmpty: true
identity: MYSQL
mybatis:
mapperLocations: classpath:**/mapper/*.xml
3 指定mapper需要掃面的包路勁
@MapperScan(basePackages = "com.example.tkmapper.mapper")
@SpringBootApplication
public class TkMapperApplication {
public static void main(String[] args) {
SpringApplication.run(TkMapperApplication.class, args);
}
}
注意: MapperScan 是通用mapper的 tk.mybatis.spring.annotation.MapperScan
4.書寫mapper類
public interface UserMapper extends tk.mybatis.mapper.common.Mapper<User> {
}
很多查詢方法我們都可以直接使用了
----------------------------------------------------------------------
同樣 我們也可以使用工具自動(dòng)生成 mapper 和 entity文件
1.首先配置maven插件
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.7</version>
<configuration>
<configurationFile>
${basedir}/src/main/resources/generator/generatorConfig.xml
</configurationFile>
<overwrite>true</overwrite>
<verbose>true</verbose>
</configuration>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.16</version>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>4.0.0</version>
</dependency>
</dependencies>
</plugin>
2 在resource 下 配置數(shù)據(jù)庫信息 generator.properties
#Mybatis Generator configuration
#dao類和實(shí)體類的位置
project =src/main/java
#mapper文件的位置
resources=src/main/resources
#根據(jù)數(shù)據(jù)庫中的表生成對(duì)應(yīng)的pojo類、dao、mapper
jdbc_driver =com.mysql.jdbc.Driver
jdbc_url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
jdbc_user=root
jdbc_password=root
3 在resource下配置 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>
<!--執(zhí)行g(shù)enerator插件生成文件的命令: call mvn mybatis-generator:generate -e -->
<!-- 引入配置文件 -->
<properties resource="generator/generator.properties"/>
<!--classPathEntry:數(shù)據(jù)庫的JDBC驅(qū)動(dòng),換成你自己的驅(qū)動(dòng)位置 可選 -->
<!--<classPathEntry location="D:\generator_mybatis\mysql-connector-java-5.1.24-bin.jar" /> -->
<!-- 一個(gè)數(shù)據(jù)庫一個(gè)context -->
<!--defaultModelType="flat" 大數(shù)據(jù)字段,不分表 -->
<context id="MysqlTables" targetRuntime="MyBatis3Simple" defaultModelType="flat">
<!-- 自動(dòng)識(shí)別數(shù)據(jù)庫關(guān)鍵字,默認(rèn)false,如果設(shè)置為true,根據(jù)SqlReservedWords中定義的關(guān)鍵字列表;
一般保留默認(rèn)值,遇到數(shù)據(jù)庫關(guān)鍵字(Java關(guān)鍵字),使用columnOverride覆蓋 -->
<property name="autoDelimitKeywords" value="true" />
<!-- 生成的Java文件的編碼 -->
<property name="javaFileEncoding" value="utf-8" />
<!-- beginningDelimiter和endingDelimiter:指明數(shù)據(jù)庫的用于標(biāo)記數(shù)據(jù)庫對(duì)象名的符號(hào),比如ORACLE就是雙引號(hào),MYSQL默認(rèn)是`反引號(hào); -->
<property name="beginningDelimiter" value="`" />
<property name="endingDelimiter" value="`" />
<!-- 格式化java代碼 -->
<property name="javaFormatter" value="org.mybatis.generator.api.dom.DefaultJavaFormatter"/>
<!-- 格式化XML代碼 -->
<property name="xmlFormatter" value="org.mybatis.generator.api.dom.DefaultXmlFormatter"/>
<plugin type="org.mybatis.generator.plugins.SerializablePlugin" />
<plugin type="org.mybatis.generator.plugins.ToStringPlugin" />
<plugin type="tk.mybatis.mapper.generator.MapperPlugin">
<property name="mappers" value="tk.mybatis.mapper.common.Mapper"/>
<property name="caseSensitive" value="true"/>
</plugin>
<!-- 注釋 -->
<commentGenerator >
<property name="suppressAllComments" value="false"/><!-- 是否取消注釋 -->
<property name="suppressDate" value="true" /> <!-- 是否生成注釋代時(shí)間戳-->
</commentGenerator>
<!-- jdbc連接 -->
<jdbcConnection driverClass="${jdbc_driver}"
connectionURL="${jdbc_url}"
userId="${jdbc_user}"
password="${jdbc_password}" >
<!--MySQL 8.x 需要指定服務(wù)器的時(shí)區(qū)-->
<property name="serverTimezone" value="UTC"/>
<!--MySQL 不支持 schema 或者 catalog 所以需要添加這個(gè)-->
<!--參考 : http://www.mybatis.org/generator/usage/mysql.html-->
<property name="nullCatalogMeansCurrent" value="true"/>
<!-- MySQL8默認(rèn)啟用 SSL ,不關(guān)閉會(huì)有警告-->
<property name="useSSL" value="false"/>
</jdbcConnection>
<!-- 類型轉(zhuǎn)換 -->
<javaTypeResolver>
<!-- 是否使用bigDecimal, false可自動(dòng)轉(zhuǎn)化以下類型(Long, Integer, Short, etc.) -->
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver>
<!-- 生成實(shí)體類地址 -->
<javaModelGenerator targetPackage="com.example.tkmapper.entity" targetProject="${project}" >
<property name="enableSubPackages" value="false"/>
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<!-- 生成mapxml文件 -->
<sqlMapGenerator targetPackage="mapper" targetProject="${resources}" >
<property name="enableSubPackages" value="false" />
</sqlMapGenerator>
<!-- 生成mapxml對(duì)應(yīng)client,也就是接口dao -->
<javaClientGenerator targetPackage="com.example.tkmapper.mapper" targetProject="${project}" type="XMLMAPPER" >
<property name="enableSubPackages" value="false" />
</javaClientGenerator>
<!-- table可以有多個(gè),每個(gè)數(shù)據(jù)庫中的表都可以寫一個(gè)table,tableName表示要匹配的數(shù)據(jù)庫表,也可以在tableName屬性中通過使用%通配符來匹配所有數(shù)據(jù)庫表,只有匹配的表才會(huì)自動(dòng)生成文件 -->
<table tableName="user" enableCountByExample="true" enableUpdateByExample="true" enableDeleteByExample="true" enableSelectByExample="true" selectByExampleQueryId="true">
<!-- 數(shù)據(jù)庫表主鍵 -->
<generatedKey column="id" sqlStatement="Mysql" identity="true" />
</table>
</context>
</generatorConfiguration>
最后執(zhí)行命令 代碼生成
mvn mybatis-generator:generate
表聯(lián)合查詢 就需要自己寫 sql 了 同樣在xml 文件里面寫 和普通的用法相同
<select id = "findUserById" resultMap = "BaseResult">
SELECT * FROM user where id = #{id}
</select>
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。