如何進(jìn)行SpringBoot2.X集成MyBatis數(shù)據(jù)層開發(fā)

本篇文章為大家展示了如何進(jìn)行Spring Boot 2.X集成MyBatis數(shù)據(jù)層開發(fā),內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

成都創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供肅寧網(wǎng)站建設(shè)、肅寧做網(wǎng)站、肅寧網(wǎng)站設(shè)計、肅寧網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、肅寧企業(yè)網(wǎng)站模板建站服務(wù),10年肅寧做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。

MyBatis 簡介


概述

MyBatis 是一款優(yōu)秀的持久層框架,支持定制化 SQL、存儲過程以及高級映射。它采用面向?qū)ο缶幊痰姆绞綄?shù)據(jù)庫進(jìn)行 CRUD 的操作,使程序中對關(guān)系數(shù)據(jù)庫的操作更方便簡單。它支持 XML 描述符配置文件和注解兩種方式執(zhí)行 SQL 語句。“簡單靈活”是它在對象關(guān)系映射工具上的最大優(yōu)勢。

mybatis-spring-boot-starter

過去使用 MyBatis 開發(fā),需要各種配置文件、實體類、Dao 層映射關(guān)聯(lián)、還有一大推其它配置。經(jīng)過進(jìn)行不斷的優(yōu)化后,終于他來了,mybatis-spring-boot-starter 可以做到無需配置只用注解開發(fā),也可以使用簡單的配置輕松上手。 當(dāng)然兩種方式都需要在 POM 文件引入mybatis-spring-boot-starter

<!-- mybaits -->
<dependency>
	<groupId>org.mybatis.spring.boot</groupId>
	<artifactId>mybatis-spring-boot-starter</artifactId>
	<version>2.1.0</version>
</dependency>

集成 MyBatis


準(zhǔn)備工作
1.構(gòu)建一個 Spring Boot項目
2.建立 MySQL 數(shù)據(jù)庫(db_test),創(chuàng)建表(t_user)及添加部分測試數(shù)據(jù)
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for t_user
-- ----------------------------
DROP TABLE IF EXISTS `t_user`;
CREATE TABLE `t_user` (
  `id` int(8) NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `user_name` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '用戶姓名',
  `user_sex` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '用戶性別',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=23 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of t_user
-- ----------------------------
BEGIN;
INSERT INTO `t_user` VALUES (1, '劉備', '男');
INSERT INTO `t_user` VALUES (2, '孫尚香', '女');
INSERT INTO `t_user` VALUES (3, '周瑜', '男');
INSERT INTO `t_user` VALUES (4, '小喬', '女');
INSERT INTO `t_user` VALUES (5, '諸葛亮', '男');
INSERT INTO `t_user` VALUES (6, '黃月英', '女');
INSERT INTO `t_user` VALUES (7, '關(guān)羽', '男');
INSERT INTO `t_user` VALUES (8, '張飛', '男');
INSERT INTO `t_user` VALUES (9, '趙云', '男');
INSERT INTO `t_user` VALUES (10, '黃總', '男');
INSERT INTO `t_user` VALUES (11, '曹操', '男');
INSERT INTO `t_user` VALUES (12, '司馬懿', '男');
INSERT INTO `t_user` VALUES (13, '貂蟬', '女');
INSERT INTO `t_user` VALUES (14, '呂布', '男');
INSERT INTO `t_user` VALUES (15, '馬超', '男');
INSERT INTO `t_user` VALUES (16, '魏延', '男');
INSERT INTO `t_user` VALUES (17, '孟獲', '男');
INSERT INTO `t_user` VALUES (18, '大喬', '女');
INSERT INTO `t_user` VALUES (19, '劉嬋', '男');
INSERT INTO `t_user` VALUES (20, '姜維', '男');
INSERT INTO `t_user` VALUES (21, '廖化', '男');
INSERT INTO `t_user` VALUES (22, '關(guān)平', '男');
COMMIT;

SET FOREIGN_KEY_CHECKS = 1;
3.新建用戶實體類 UserEntity.java
public class UserEntity {

	private Long id;
	private String userName;
	private String userSex;
	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public String getUserSex() {
		return userSex;
	}
	public void setUserSex(String userSex) {
		this.userSex = userSex;
	}
	
}
注解方式
1.添加相關(guān) Maven 依賴
<dependencies>
		<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>
		
		
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-jdbc</artifactId>
		</dependency>
		
		<!-- 熱部署模塊 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
			<optional>true</optional> <!-- 這個需要為 true 熱部署才有效 -->
		</dependency>
		
		
		<!-- mysql 數(shù)據(jù)庫驅(qū)動. -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<scope>runtime</scope>
		</dependency>
		
		<!-- mybaits -->
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>2.1.0</version>
		</dependency>
		
	</dependencies>
2.application.properties 添加相關(guān)配置
#datasource
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/db_test?useUnicode=true&characterEncoding=UTF-8&useSSL=true
spring.datasource.username=root
spring.datasource.password=root

在啟動類中添加對 mapper 包掃描@MapperScan

@SpringBootApplication
@MapperScan("cn.zwqh.springboot.dao")
public class SpringBootMybatisApplication {

	public static void main(String[] args) {
		SpringApplication.run(SpringBootMybatisApplication.class, args);
	}

}

或者直接在 Mapper 類上面添加注解@Mapper,建議使用上面那種,不然每個 mapper 加個注解也挺麻煩的

3.Mapper 開發(fā)
public interface UserDao {
	//使用注解方式
	/**
	 * 獲取所有用戶
	 * @return
	 */
	@Select("select * from t_user")
	@Results({
		@Result(property = "userName",column = "user_name"),
		@Result(property = "userSex",column = "user_sex")
	})
	List<UserEntity> getAll2();
	/**
	 * 根據(jù)id獲取用戶
	 * @param id
	 * @return
	 */
	@Select("select * from t_user where id=#{id}")
	@Results({
		@Result(property = "userName",column = "user_name"),
		@Result(property = "userSex",column = "user_sex")
	})
	List<UserEntity> getOne2(Long id);
	/**
	 * 新增用戶
	 * @param user
	 */
	@Insert("insert into t_user (user_name,user_sex) values(#{userName},#{userSex})")
	void insertUser2(UserEntity user);
	/**
	 * 修改用戶
	 * @param user
	 */
	@Update("update t_user set user_name=#{userName},user_sex=#{userSex} where id=#{id}")
	void updateUser2(UserEntity user);
	/**
	 * 刪除用戶
	 * @param id
	 */
	@Delete("delete from t_user where id=#{id}")
	void deleteUser2(Long id);

}

注解: @Select 是查詢類的注解,所有的查詢均使用這個 @Result 修飾返回的結(jié)果集,關(guān)聯(lián)實體類屬性和數(shù)據(jù)庫字段一一對應(yīng),如果實體類屬性和數(shù)據(jù)庫屬性名保持一致,就不需要這個屬性來修飾。 @Insert 插入數(shù)據(jù)庫使用,直接傳入實體類會自動解析屬性到對應(yīng)的值 @Update 負(fù)責(zé)修改,也可以直接傳入對象 @delete 負(fù)責(zé)刪除

4. restful 接口測試

UserController

@RestController
@RequestMapping("/user")
public class UserController {
	
	@Autowired
	private UserDao userDao;
	
	
	//使用注解方式
	/**
	 * 獲取所有用戶
	 * @return
	 */
	@RequestMapping("/getAll2")
	public List<UserEntity> getAll2(){
		return userDao.getAll2(); 
	}
	/**
	 * 根據(jù)id獲取用戶
	 * @return
	 */
	@RequestMapping("/getOne2")
	public List<UserEntity> getOne2(Long id){
		return userDao.getOne2(id); 
	}
	/**
	 * 新增用戶
	 * @param user
	 * @return
	 */
	@RequestMapping("/insertUser2")
	public String insertUser2(UserEntity user) {
		userDao.insertUser2(user);
		return "insert success";
	}	
	/**
	 * 修改用戶
	 * @param user
	 * @return
	 */
	@RequestMapping("/updateUser2")
	public String updateUser2(UserEntity user) {
		userDao.updateUser2(user);
		return "update success";
	}
	/**
	 * 刪除用戶
	 * @param user
	 * @return
	 */
	@RequestMapping("/deleteUser2")
	public String deleteUser2(Long id) {
		userDao.deleteUser2(id);
		return "delete success";
	}	
	
}

啟動項目后可以通過瀏覽器訪問 http://127.0.0.1:8080/user/getOne2?id=1 進(jìn)行測試,其他雷同。也可以編寫單元測試進(jìn)行測試。

XML 方式
1.pom 文件如上
2.application.properties 添加相關(guān)配置
#datasource
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/db_test?useUnicode=true&characterEncoding=UTF-8&useSSL=true
spring.datasource.username=root
spring.datasource.password=root
#mybatis
mybatis.mapper-locations=classpath:/mapper/*.xml
3.Mapper 層開發(fā)
public interface UserDao {
	//mapper.xml方式 
	/**
	 * 獲取所有用戶
	 * @return
	 */
	List<UserEntity> getAll();
	/**
	 * 根據(jù)id獲取用戶
	 * @return
	 */
	List<UserEntity> getOne(Long id);
	/**
	 * 新增用戶
	 * @param user
	 */
	void insertUser(UserEntity user);
	/**
	 * 修改用戶
	 * @param user
	 */
	void updateUser(UserEntity user);
	/**
	 * 刪除用戶
	 * @param id
	 */
	void deleteUser(Long id);

}
4.xml 映射文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.4//EN" 
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.zwqh.springboot.dao.UserDao">
	<resultMap type="cn.zwqh.springboot.model.UserEntity" id="user">
		<id property="id" column="id"/>
		<result property="userName" column="user_name"/>
		<result property="userSex" column="user_sex"/>
	</resultMap>
	<!-- 獲取所有用戶 -->
	<select id="getAll" resultMap="user">
		select * from t_user
	</select>
	<!-- 根據(jù)用戶ID獲取用戶 -->
	<select id="getOne" resultMap="user">
		select * from t_user where id=#{id}
	</select>
	<!-- 新增用戶 -->
	<insert id="insertUser" parameterType="cn.zwqh.springboot.model.UserEntity">
		insert into t_user (user_name,user_sex) values(#{userName},#{userSex})
	</insert>
	<!-- 修改用戶 -->
	<update id="updateUser" parameterType="cn.zwqh.springboot.model.UserEntity">
		update t_user set user_name=#{userName},user_sex=#{userSex} where id=#{id}
	</update>
	<!-- 刪除用戶 -->
	<delete id="deleteUser" parameterType="Long">
		delete from t_user where id=#{id}
	</delete>
</mapper>
如何選擇使用

個人覺得,注解方式適合輕量級的項目,現(xiàn)在的微服務(wù)項目比較適合這種模式;對于大型項目,復(fù)雜的多表聯(lián)合查詢sql用 xml 更適合。

擴展: 使用 MyBatis 分頁插件 pagehelper
1. pom.xml 添加依賴
<!-- pagehelper -->
		<dependency>
			<groupId>com.github.pagehelper</groupId>
			<artifactId>pagehelper-spring-boot-starter</artifactId>
			<version>1.2.12</version>
		</dependency>
2. pagehelper 使用
@RestController
@RequestMapping("/user")
public class UserController {
	
	@Autowired
	private UserDao userDao;

	/**
	 * 使用pagehelper分頁插件
	 * @param pageNum
	 * @param pageSize
	 * @return
	 */
	@RequestMapping("/pagehelperTest")
	public List<UserEntity> pagehelperTest(int pageNum,int pageSize){
		PageHelper.startPage(pageNum, pageSize);
		return userDao.getAll(); //直接使用上面的 mapper 
	}
}
3. 測試

瀏覽器直接訪問 http://127.0.0.1:8080/user/pagehelperTest?pageNum=1&pageSize=10 ,改變參數(shù)試試。

上述內(nèi)容就是如何進(jìn)行Spring Boot 2.X集成MyBatis數(shù)據(jù)層開發(fā),你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

當(dāng)前文章:如何進(jìn)行SpringBoot2.X集成MyBatis數(shù)據(jù)層開發(fā)
轉(zhuǎn)載注明:http://bm7419.com/article12/jdeegc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)ChatGPT、網(wǎng)頁設(shè)計公司、標(biāo)簽優(yōu)化、用戶體驗、外貿(mào)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)