首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Spring Boot2.x-07Spring Boot2.1.2整合Mybatis

Spring Boot2.x-07Spring Boot2.1.2整合Mybatis

作者头像
小小工匠
发布2021-08-17 15:48:12
发布2021-08-17 15:48:12
3190
举报
文章被收录于专栏:小工匠聊架构小工匠聊架构

文章目录

概述

废话不多说了,直接撸吧 ,先看看整体的结构 【 Spring Boot 2.1.2 , MyBatis 1.3.2 , Mysql 8.0.13 】


搭建Spring Boot工程 Version 2.1.2.RELEASE

pom.xml

代码语言:javascript
复制
<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.0modelVersion>
	<parent>
		<groupId>org.springframework.bootgroupId>
		<artifactId>spring-boot-starter-parentartifactId>
		<version>2.1.2.RELEASEversion>
		<relativePath /> 
	parent>
	<groupId>com.artisangroupId>
	<artifactId>springbootMybatisartifactId>
	<version>0.0.1-SNAPSHOTversion>
	<name>springbootMybatisname>
	<description>Artisan description>

	<properties>
		<project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8project.reporting.outputEncoding>
		<java.version>1.8java.version>
	properties>

	<dependencies>

		
		<dependency>
			<groupId>org.springframework.bootgroupId>
			<artifactId>spring-boot-starter-webartifactId>
		dependency>

		
		<dependency>
			<groupId>org.springframework.bootgroupId>
			<artifactId>spring-boot-starter-jdbcartifactId>
		dependency>

		
		<dependency>
			<groupId>mysqlgroupId>
			<artifactId>mysql-connector-javaartifactId>
		dependency>

		
		<dependency>
			<groupId>org.mybatis.spring.bootgroupId>
			<artifactId>mybatis-spring-boot-starterartifactId>
			<version>1.3.2version>
		dependency>

		
		<dependency>
			<groupId>org.projectlombokgroupId>
			<artifactId>lombokartifactId>
		dependency>

		
		<dependency>
			<groupId>org.springframework.bootgroupId>
			<artifactId>spring-boot-devtoolsartifactId>
			<optional>trueoptional>
		dependency>

		
		<dependency>
			<groupId>org.springframework.bootgroupId>
			<artifactId>spring-boot-starter-testartifactId>
			<scope>testscope>
		dependency>
	dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.bootgroupId>
				<artifactId>spring-boot-maven-pluginartifactId>
			plugin>
		plugins>
	build>

project>

pom中每个jar包都加了注释,这里就不啰嗦了。


application.yml 数据库的配置

代码语言:javascript
复制
# datasource
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver # JDBC连接Mysql6以上com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/artisan?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=false
    username: root
    password: root

通过上面的属性配置数据库的连接信息后, Spring Boot 就可以自动配置数据源了


集成Mybatis

Step1 添加依赖mybatis- spring-boot- starter

刚才的pom中已经有了,如下

代码语言:javascript
复制
	<!-- mybatis的starter -->
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>1.3.2</version>
		</dependency>

Step2 库表及domain类

为了方便演示,新建库表和对应的实体类

代码语言:javascript
复制
-- ----------------------------
-- Table structure for artisan
-- ----------------------------
DROP TABLE IF EXISTS `artisan`;
CREATE TABLE `artisan` (
  `id` int(9) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `sex` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;



-- ----------------------------
-- Records of artisan
-- ----------------------------
INSERT INTO `artisan` VALUES ('1', 'artisan', '男');
INSERT INTO `artisan` VALUES ('2', '程序媛', '女');
INSERT INTO `artisan` VALUES ('3', '周杰伦', '男');
INSERT INTO `artisan` VALUES ('4', '小笼包', '女');
INSERT INTO `artisan` VALUES ('5', '巨石强森', '男');

com.artisan.model包下新建Artisan实体类

代码语言:javascript
复制
package com.artisan.model;

import lombok.Data;

/**
 * 
 * @author yangshangwei
 * 
 *         lombok的注解 @Data 注解在类上 提供类所有属性的 getting 和 setting 方法,
 *         此外还提供了equals、canEqual、hashCode、toString 方法
 *
 */
@Data
public class Artisan {

	private Long id;
	private String name;
	private String sex;

}

Step3 添加ArtisanMapper接口

com.artisan.mapper包下新建接口 ArtisanMapper

代码语言:javascript
复制
package com.artisan.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Mapper;

import com.artisan.model.Artisan;
/**
 * 
 * @author yangshangwei
 *	
 * 增加@Mapper这个注解之后,Spring 启动时会自动扫描该接口,这样就可以在需要使用时直接注入 Mapper 了
 */

@Mapper
public interface ArtisanMapper {
	
	/**
	 *  查询全部数据
	 */
	List<Artisan> selectArtisan();
	
}

使用了@ Mapper 注解, 增加这个注解之后,Spring 启动时会自动扫描该接口,这样就可以在需要使用时直接注入 Mapper 了


Step4 添加SQL映射文件

在 src/main/resources下面创建mapper目录,然后新建 ArtisanMapper.xml映射文件

代码语言:javascript
复制
<mapper namespace="com.artisan.mapper.ArtisanMapper">
	<select id="selectArtisan" resultType="Artisan"> 
		select id , name ,sex from artisan
	select>
mapper>

Step5 application.yml中配置mybatis

增加如下Mybatis的配置

代码语言:javascript
复制
#mybatis    
mybatis:
  # 映射文件的路径 ,支持 Ant 风格的通配符, 多个配置可以使用英文逗号隔开
  mapper-locations: classpath:mapper/*.xml  
  # 类型别名包画配置,只能指定具体的包,多个配置可以使用英文逗号隔开
  type-aliases-package: com.artisan.model
  # Mybatis SQL语句控制台打印
  configuration: 
      log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

Step6 Service层编写

接口和实现类

代码语言:javascript
复制
package com.artisan.service;

import java.util.List;

import com.artisan.model.Artisan;

public interface ArtisanService {
	
	List<Artisan> getArtisanList();
}
代码语言:javascript
复制
package com.artisan.service.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.artisan.mapper.ArtisanMapper;
import com.artisan.model.Artisan;
import com.artisan.service.ArtisanService;

@Service
public class ArtisanServiceImpl implements ArtisanService {
	
	@Autowired
	private ArtisanMapper artisanMapper;
	
	@Override
	public List<Artisan> getArtisanList() {
		return artisanMapper.selectArtisan();
	}

}

Step7 约定后台返回规范(可省略)

使用泛型封装下返回结果,见注释。 第二个包装类CodeMsg 用了lombok的注解,可以不用。Result没用,仅仅是演示下。。。

代码语言:javascript
复制
package com.artisan.result;

public class Result<T> {
	private int code;
	private String msg;
	private T data;

	/**
	 * 成功时候的调用
	 * */
	public static <T> Result<T> success(T data){
		return new  Result<T>(data);
	}
	
	/**
	 * 失败时候的调用
	 * */
	public static <T> Result<T> error(CodeMsg cm){
		return new  Result<T>(cm);
	}
	
	private Result(T data) {
		this.code = 0;
		this.msg = "success";
		this.data = data;
	}
	
	private Result(CodeMsg cm) {
		if(cm == null) {
			return;
		}
		this.code = cm.getCode();
		this.msg = cm.getMsg();
	}

	public int getCode() {
		return code;
	}
	public String getMsg() {
		return msg;
	}
	public T getData() {
		return data;
	}
}
代码语言:javascript
复制
package com.artisan.result;

import lombok.Getter;

public class CodeMsg {

	@Getter
	private int code;
	@Getter
	private String msg;

	// 通用异常
	public static CodeMsg SUCCESS = new CodeMsg(0, "success");
	public static CodeMsg SERVER_ERROR = new CodeMsg(-1, "服务端异常");

	private CodeMsg(int code, String msg) {
		this.code = code;
		this.msg = msg;
	}

}

Step8 Controller编写

代码语言:javascript
复制
package com.artisan.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import com.artisan.model.Artisan;
import com.artisan.result.CodeMsg;
import com.artisan.result.Result;
import com.artisan.service.ArtisanService;

@RestController
public class ArtisanController {
	
	@Autowired
	private ArtisanService artisanService;
	
	@GetMapping("/test")
	public String test() {
		return "artisan test";
	}
	
	// 正常情况
	@GetMapping("/artisans")
	public Result<List<Artisan>> selectAllArtisan() {
		return Result.success(artisanService.getArtisanList());
	}
	
	
	// 模拟异常情况
	@GetMapping("/artisansError")
	public Result<List<Artisan>> selectAllArtisanError() {
		return Result.error(CodeMsg.SERVER_ERROR);
	}
	
}

Step9 测试

比较简单,各层的单元测试就不写了,直接启动测试吧

启动spring boot 工程

访问 http://localhost:8080/artisans

日志:

访问 http://localhost:8080/artisansError


代码

https://github.com/yangshangwei/springbootMybatis

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/01/22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 概述
  • 搭建Spring Boot工程 Version 2.1.2.RELEASE
  • application.yml 数据库的配置
  • 集成Mybatis
    • Step1 添加依赖mybatis- spring-boot- starter
    • Step2 库表及domain类
    • Step3 添加ArtisanMapper接口
    • Step4 添加SQL映射文件
    • Step5 application.yml中配置mybatis
    • Step6 Service层编写
    • Step7 约定后台返回规范(可省略)
    • Step8 Controller编写
    • Step9 测试
  • 代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档