大家好,我是猿猴小冷,一只小小的猿猴,今天给大家分享一下SpringBoot整合Mybatis(一个小小的案例)
- 首先,添加SpringBoot整合Mybatis所需要的依赖
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.3</version>
</dependency>`
-
创建application.yml配置文件(注:SpringBoot扫描时只认application配置文件名称)
一个项目会有多个环境,一般分为三个环境:a. 开发环境
b. 测试环境
c. 生产环境当你需要使用哪个环境只需要在主配置文件(application.yml)中将用的配置文件写上就行,在Spring Boot中多环境配置文件名需要满足application-{profile}.yml的格式,其中{profile}对应你的环境标识(如:application-dev.yml的dev就是环境的标识),比如你想用到开发环境,你就得在主配置文件中配置spring: -->profiles: -->active: 你的环境标识application-{profile}.yml格式的{profile}名称
application.yml
#yml格式配置文件 空格是关键 它有层次之分
spring:
profiles:
active: dev
application-dev.yml
#开发环境
server:
#设置端口号
port: 8080
#设置项目根目录
servlet:
context-path: /demo
mybatis:
mapper-locations: classpath:mapper/*.xml
#jdbc连接
spring:
datasource:
username: root
password: 111111
url: jdbc:mysql://localhost:3306/springboot
driver-class-name: com.mysql.jdbc.Driver
- 实体类定义
package com.lq.sbdemo.entity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
@Data
@NoArgsConstructor
@AllArgsConstructor
@ApiModel
public class User {
private Integer id;
private String userCode;
private String userName;
private String userPassword;
private Integer gender;
private Date birthday;
private String phone;
private String address;
private Integer userRole;
private Integer createdBy;
private Date creationDate;
private Integer modifyBy;
private Date modifyDate;
private String idPicPath;
private String workPicPath;
}
}
在这里给大家介绍一个插件,lombok,它是是一个Java库,它会自动插入编辑器和构建工具中,Lombok提供了一组有用的注释,用来消除Java类中的大量样板代码。它里面的@Data注解能给属性提供getset方法,
@NoArgsConstructor提供无参构造,
@AllArgsConstructor提供带参构造。
- 三层架构
a. dao层(数据访问层)
package com.lq.sbdemo.dao;
import com.lq.sbdemo.entity.User;
import com.lq.sbdemo.entity.UserEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 用户数据访问层接口
*/
public interface UserMapper {
/**
* 根据用户编号查询用户数据
* @param id 用户编号
* @return 用户数据对象集合
*/
public User selectUserById(@Param("id") Integer id);
}
b. 动态Sql的映射
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "mybatis-3-mapper.dtd">
<mapper namespace="com.lq.sbdemo.dao.UserMapper">
<select id="selectUserById" resultType="com.lq.sbdemo.entity.User">
SELECT * FROM smbms_user WHERE id=#{id}
</select>
</mapper>
c. service层(业务逻辑层)
package com.lq.sbdemo.service;
import com.lq.sbdemo.entity.User;
import com.lq.sbdemo.entity.UserEntity;
import java.util.List;
/**
* 业务逻辑层接口
*/
public interface UserService {
/**
* 根据用户编号查询用户数据
* @param id 用户编号
* @return 用户数据对象集合
*/
public User findUserByid(Integer id);
}
d. service接口实现类
package com.lq.sbdemo.service.impl;
import com.lq.sbdemo.dao.UserMapper;
import com.lq.sbdemo.entity.User;
import com.lq.sbdemo.entity.UserEntity;
import com.lq.sbdemo.service.UserService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
/**
* 业务逻辑层接口实现类
*/
@Service("userService")
public class UserServiceImpl implements UserService {
@Resource
private UserMapper userMapper;
@Override
public User findUserByid(Integer id) {
return userMapper.selectUserById(id);
}
}
- 控制器API的定义
package com.lq.sbdemo.controller;
import com.lq.sbdemo.entity.User;
import com.lq.sbdemo.service.UserService;
import com.lq.sbdemo.service.impl.UserServiceImpl;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
@RestController
@RequestMapping("/user")
public class UserController {
@Resource
private UserService userService;
@GetMapping("/getUserById.html/{id}")
public User getUserById(@PathVariable Integer id){
return userService.findUserByid(id);
}
}
- 运行效果图(表示层,后台返回的JSON数据)
7. 总结SpringBoot的一些优势
(1)快速构建项目。
(2)对主流开发框架的无配置集成。
(3)项目可独立运行,无须外部依赖Servlet容器。
(4)提供运行时的应用监控。
(5)极大地提高了开发、部署效率。