引入依賴
Spring Boot對於MyBatis的支持需要引入mybatis-spring-boot-starter的pom文件。
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
在加添MySQL等相關依賴后,完整的pom.xml:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.louis</groupId> <artifactId>kitty-admin</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>kitty-admin</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.4.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> <mybatis.spring.version>1.3.2</mybatis.spring.version> </properties> <dependencies> <!-- spring boot --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!-- mybatis --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>${mybatis.spring.version}</version> </dependency> <!-- mysql --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
添加配置
1.添加MyBatis配置
添加MyBatis配置類,配置相關掃描路徑,包括DAO,Model,XML映射文件的掃描。
新建com.louis.kitty.admin.config包,並創建一個MyBatis配置類,MybatisConfig.java。
package com.louis.kitty.admin.config; import javax.sql.DataSource; import org.apache.ibatis.session.SqlSessionFactory; import org.mybatis.spring.SqlSessionFactoryBean; import org.mybatis.spring.annotation.MapperScan; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.io.support.PathMatchingResourcePatternResolver; @Configuration @MapperScan("com.louis.kitty.**.dao") // 掃描DAO public class MybatisConfig { @Autowired private DataSource dataSource; @Bean public SqlSessionFactory sqlSessionFactory() throws Exception { SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean(); sessionFactory.setDataSource(dataSource); sessionFactory.setTypeAliasesPackage("com.louis.kitty.**.model"); // 掃描Model PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(); sessionFactory.setMapperLocations(resolver.getResources("classpath*:**/sqlmap/*.xml")); // 掃描映射文件 return sessionFactory.getObject(); } }
2.添加數據源配置
打開 application.yml ,添加MySQL數據源連接信息。
server: port: 8088 spring: datasource: driverClassName: com.mysql.jdbc.Driver url: jdbc:mysql://localhost:3306/mango?useUnicode=true&zeroDateTimeBehavior=convertToNull&autoReconnect=true&characterEncoding=utf-8 username: root password: 123456
生成MyBatis模塊
由於手動編寫MyBatis的Model、DAO、XML映射文件比較繁瑣,通常都會通過一些生成工具來生成。MyBatis官方也提供了生成工具(MyBaits Generator),另外還有一些基於官方基礎上改進的第三方工具,比如MyBatis Plus就是國內提供的一款非常優秀的開源工具,網上相關教程比較多,這里就不再贅述了。
這里提供一些資料作為參考。
Mybatis Generator 官網:http://www.mybatis.org/generator/index.html
Mybatis Generator 教程:https://blog.csdn.net/testcs_dn/article/details/77881776
MyBatis Plus 官網: http://mp.baomidou.com/#/
MyBatis Plus 官網: http://mp.baomidou.com/#/quick-start
代碼生成好之后,分別將Domain、DAO、XML映射文件拷貝到相應的包里。

打開Mapper,我們看到MyBatis Generator給我們默認生成了一些增刪改查的方法。
package com.louis.kitty.admin.dao; import com.louis.kitty.admin.model.SysUser; public interface SysUserMapper { int deleteByPrimaryKey(Long userId); int insert(SysUser record); int insertSelective(SysUser record); SysUser selectByPrimaryKey(Long userId); int updateByPrimaryKeySelective(SysUser record); int updateByPrimaryKey(SysUser record); }
編寫服務接口
向 SysUserMapper 類中新一個 selectAll 方法,用於查詢所有的用戶信息。
package com.louis.kitty.admin.dao; import java.util.List; import com.louis.kitty.admin.model.SysUser; public interface SysUserMapper { int deleteByPrimaryKey(Long userId); int insert(SysUser record); int insertSelective(SysUser record); SysUser selectByPrimaryKey(Long userId); int updateByPrimaryKeySelective(SysUser record); int updateByPrimaryKey(SysUser record); /** * 查詢全部 * @return */ List<SysUser> selectAll(); }
向 SysUserMapper.xml 中加入 selectAll 的查詢語句。
<select id="selectAll" resultMap="BaseResultMap"> select <include refid="Base_Column_List" /> from sys_user </select>
編寫 SysUserService 接口,包含 selectAll 和 findByUserId 兩個方法。
package com.louis.kitty.admin.sevice; import java.util.List; import com.louis.kitty.admin.model.SysUser; public interface SysUserService { /** * 根據用戶ID查找用戶 * @param userId * @return */ SysUser findByUserId(Long userId); /** * 查找所有用戶 * @return */ List<SysUser> findAll(); }
編寫 SysUserServiceImpl 實現類,調用 SysUserMapper 方法完成查詢操作。
package com.louis.kitty.admin.sevice.impl; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.louis.kitty.admin.dao.SysUserMapper; import com.louis.kitty.admin.model.SysUser; import com.louis.kitty.admin.sevice.SysUserService; @Service public class SysUserServiceImpl implements SysUserService { @Autowired private SysUserMapper sysUserMapper; @Override public SysUser findByUserId(Long userId) { return sysUserMapper.selectByPrimaryKey(userId); } @Override public List<SysUser> findAll() { return sysUserMapper.selectAll(); } }
編寫 SysUserController restful 接口,返回JSON數據格式,提供外部調用。
package com.louis.kitty.admin.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import com.louis.kitty.admin.sevice.SysUserService; @RestController @RequestMapping("user") public class SysUserController { @Autowired private SysUserService sysUserService; @GetMapping(value="/findByUserId") public Object findByUserId(@RequestParam Long userId) { return sysUserService.findByUserId(userId); } @GetMapping(value="/findAll") public Object findAll() { return sysUserService.findAll(); } }
打包資源
雖然代碼編寫已經完成,但此時啟動運行還是會有問題的,因為在編譯打包的時候,我們的XML映射文件是不在默認打包范圍內的,所以需要修改一下配置。
修改 pom.xml ,在 build 標簽內加入形如以下的 resource 標簽的打包配置,這樣代碼打包時就會把映射文件也拷貝過去了。
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
<!-- 打包時拷貝MyBatis的映射文件 -->
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/sqlmap/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.*</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>
測試運行
編譯啟動,分別訪問: http://localhost:8088/user/findAll, http://localhost:8088/user/findByUserId?userId=1,都能看到結果正常返回。
http://localhost:8088/user/findByUserId?userId=1

http://localhost:8088/user/findAll

源碼下載
后端:https://gitee.com/liuge1988/kitty
前端:https://gitee.com/liuge1988/kitty-ui.git
作者:朝雨憶輕塵
出處:https://www.cnblogs.com/xifengxiaoma/
版權所有,歡迎轉載,轉載請注明原文作者及出處。
