此項(xiàng)目使用idea用Spring Initializr快速搭建,不含service和controller層,使用單元測試試通數(shù)據(jù)庫查詢
0)準(zhǔn)備數(shù)據(jù)庫表
數(shù)據(jù)庫執(zhí)行下面語句,創(chuàng)建d_user表
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for d_user
-- ----------------------------
DROP TABLE IF EXISTS `d_user`;
CREATE TABLE `d_user` (
`id` int(0) NOT NULL,
`name` varchar(25) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`ip` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of d_user
-- ----------------------------
INSERT INTO `d_user` VALUES (1001, '雨欣', '100011');
INSERT INTO `d_user` VALUES (1002, '雨欣:324:324:324', '100012');
SET FOREIGN_KEY_CHECKS = 1;
如下:

1)創(chuàng)建Spring Initializr
鼠標(biāo)選擇:file>new>project...進(jìn)入創(chuàng)建菜單
選擇Spring Initializr 修改配置值并next

隨后選擇你想用的功能,本人在pom文件中添加的,此處直接略過finish

創(chuàng)建后結(jié)構(gòu)如下:

2)mybatis-gennerator生成dao,mapper
項(xiàng)目生成后配置pom文件,引入需要的依賴:在pom文件的build下添加如下代碼:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!--逆向工程自動生成需要 -->
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.2</version>
<configuration>
<configurationFile>
src/main/resources/generator/genteratorCongfig.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>3.4.2</version>
</dependency>
</dependencies>
</plugin>
</plugins>
<!-- 如果不添加此節(jié)點(diǎn)mybatis的mapper.xml文件都會被漏掉。 -->
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
<include>**/*.yml</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
<include>**/*.yml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
更新pom依賴加載,在resources文件夾下添加generator文件夾,并創(chuàng)建config.properties;genteratorCongfig.xml;

代碼直接粘貼如下:
其中config.properties文件內(nèi)容如下,注意修改你的數(shù)據(jù)庫配置,自動生成的mapper,dao子文件夾名稱,以及生成路徑
jdbc.driverClass=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowMultiQueries=true
jdbc.user=root
jdbc.password=root
#模塊名
moduleName=d_user
#表名
tableName=d_user
#默認(rèn)路徑
modelPath=com.example.demo1
其中g(shù)enteratorCongfig.xml 文件內(nèi)容如下
<!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<properties resource="generator/config.properties"/>
<context id="Mysql" targetRuntime="MyBatis3Simple" defaultModelType="flat">
<property name="beginningDelimiter" value="`"/>
<property name="endingDelimiter" value="`"/>
<plugin type="tk.mybatis.mapper.generator.MapperPlugin">
<property name="mappers" value="tk.mybatis.mapper.common.Mapper"/>
<property name="caseSensitive" value="true"/>
<property name="lombok" value="Getter,Setter,ToString"/>
</plugin>
<jdbcConnection driverClass="${jdbc.driverClass}"
connectionURL="${jdbc.url}"
userId="${jdbc.user}"
password="${jdbc.password}">
</jdbcConnection>
<!--實(shí)體-->
<javaModelGenerator targetPackage="${modelPath}.model.entity.${moduleName}"
targetProject="src/main/java"/>
<!--mapper.xml-->
<sqlMapGenerator targetPackage="mapper.${moduleName}"
targetProject="./src/main/resources"/>
<!--mapper接口-->
<javaClientGenerator targetPackage="${modelPath}.dao.${moduleName}"
targetProject="src/main/java"
type="XMLMAPPER"/>
<!--為哪張表生成代碼-->
<table tableName="${tableName}">
<generatedKey column="id" sqlStatement="JDBC"/>
</table>
</context>
</generatorConfiguration>
隨后雙擊序號3處,等待自動生成組件,生成mapper;dao;model如下

打開生成文件,此時(shí)pom未引入相關(guān)依賴,方法報(bào)錯(cuò):

再次打開pom文件,配置如下內(nèi)容:(包括了測試單元)
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>2.1.5</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.16</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>3.4.2</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
解決報(bào)錯(cuò)
3)創(chuàng)建查詢語句
創(chuàng)建application.yml,mybatis-config.xml文件如下:

application文件內(nèi)容如下:
spring:
application:
name: springboot-mybatis
# profiles:
# active: test
datasource:
#MySQL數(shù)據(jù)庫支持配置
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowMultiQueries=true
username: root
password: root
type: com.zaxxer.hikari.HikariDataSource
hikari:
minimum-idle: 5
maximum-pool-size: 100
idle-timeout: 600000
pool-name: OrderHikariCP
max-lifetime: 1800000
connection-timeout: 60000
connection-test-query: SELECT 1
server:
port: 8088
mybatis:
config-location: classpath:mybatis-config.xml
type-aliases-package: org.example.common.dao.**
mapper-locations: classpath:mapper/*/*.xml
dataType: 0
mybatis-config文件內(nèi)容如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<properties resource="application.yml">
<property name="dataType" value="${dataType}"/>
</properties>
<settings>
<!-- 在null時(shí)也調(diào)用 setter,適應(yīng)于返回Map,3.2版本以上可用 -->
<setting name="callSettersOnNulls" value="true"/>
<!-- 全局映射器啟用緩存 -->
<setting name="cacheEnabled" value="true"/>
<!-- 查詢時(shí),關(guān)閉關(guān)聯(lián)對象即時(shí)加載以提高性能 -->
<setting name="lazyLoadingEnabled" value="false"/>
<!-- 設(shè)置關(guān)聯(lián)對象加載的形態(tài),此處為按需加載字段(加載字段由SQL指定),不會加載關(guān)聯(lián)表的所有字段,以提高性能 -->
<setting name="aggressiveLazyLoading" value="false"/>
<!-- 對于未知的SQL查詢,允許返回不同的結(jié)果集以達(dá)到通用的效果 -->
<setting name="multipleResultSetsEnabled" value="true"/>
<!-- 允許使用列標(biāo)簽代替列名 -->
<setting name="useColumnLabel" value="true"/>
<!-- 允許使用自定義的主鍵值(比如由程序生成的UUID 32位編碼作為鍵值),數(shù)據(jù)表的PK生成策略將被覆蓋 -->
<setting name="useGeneratedKeys" value="true"/>
<!-- 給予被嵌套的resultMap以字段-屬性的映射支持 -->
<!--<setting name="autoMappingBehavior" value="FULL" />-->
<!-- 對于批量更新操作緩存SQL以提高性能 -->
<setting name="defaultExecutorType" value="SIMPLE"/>
<!-- 數(shù)據(jù)庫超過25000秒仍未響應(yīng)則超時(shí) -->
<setting name="defaultStatementTimeout" value="25000"/>
</settings>
</configuration>
隨后在mapper中創(chuàng)建查詢selectAllById方法:

DUser selectAllById(@Param("id") Integer id);
在mapper映射中添加查詢語句:

注意:resultType若為java對象,地址映射對。
<sql id="User_Num">
id,name,ip
</sql>
<!--查詢-->
<select parameterType="Integer" id="selectAllById" resultType="com.example.demo1.model.entity.d_user.DUser">
SELECT
<include refid="User_Num"/>
FROM d_user WHERE id = #{id}
</select>
再修改springboot啟動項(xiàng)如下:

@ComponentScan(value = {"com.example"})
@MapperScan("com.example.demomybatis.**")
修改測試啟動項(xiàng)如下:

@SpringBootTest
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = Demo1Application.class)
class Demo1ApplicationTests {
@Autowired(required=true)
DUserMapper dUserMapper;
@Test
void contextLoads() {
System.out.println("here==="+dUserMapper.selectAllById(1001).getName());
}
}
啟動測試單元,查詢成功。

注意:若重新逆向工程創(chuàng)建項(xiàng)目,需要?jiǎng)h除mapper文件,不然累加,啟動報(bào)錯(cuò)
進(jìn)階項(xiàng)目---搭建dubbo項(xiàng)目: http://m.itdecent.cn/p/be534104785b