背景
做SpringBoot已经大半年了,之前一直在现成的框架做CRUD和日常业务。没时间自己重头搭建,现在找工作机会来了。
- 在Maven的POM配置依赖
- 配置文件添加数据库信息,分别是Mybatis和Spring datasource
- CRUD流程 ----> domain、mapper、service、serviceImpl、mapper.xml
- REST控制器---->我这里建了一个API包,叫啥不重要
POM.XML依赖
<!--MySQL数据库驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!--阿里巴巴连接池-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.16</version>
</dependency>
<!--Mybatis-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.0.1</version>
</dependency>
yml配置
spring:
# 持久层
datasource:
url: jdbc:mysql://120.7X.XX.XX:3306/xxxxxx?useUnicode=true&characterEncoding=utf-8
username: XXXXX
password: XXXXX
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
mybatis:
# 实体类
type-aliases-package: com.teavamc.transsocket.domain
# mapper文件扫描位置
mapper-locations: classpath:mapper/*.xml
CRUD流程
目录
实体类 User
package com.teavamc.transsocket.domain;
/**
* @author 张超 teavamc
* @Description:TODO
* @ClassName User
* @date 2019/4/29 21:36
**/
public class User {
private Integer Id;
private String username;
private String nickname;
private String gender;
public Integer getId() {
return Id;
}
public void setId(Integer id) {
Id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
@Override
public String toString() {
return "User{" +
"Id=" + Id +
", username='" + username + '\'' +
", nickname='" + nickname + '\'' +
", gender='" + gender + '\'' +
'}';
}
}
Mapper接口
这里需要注意一下的是两个注解@Mapper与@Repository
@mapper注解是Mybatis提供,面去写XML的烦恼,但是本文还是配套写xml,该注解能够省去在启动器加入@MapperScan
@Repository注解是标注数据访问组件,即DAO组件
package com.teavamc.transsocket.mapper;
import com.teavamc.transsocket.domain.User;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* @author 张超 teavamc
* @Description:TODO
* @ClassName UserMapper
* @date 2019/4/29 21:59
**/
@Mapper
@Repository
public interface UserMapper {
public List<User> selectUser();
}
service接口
这里的@Service注解标记这是一个业务组件,省去了在applicationContext.xml文件的配置
package com.teavamc.transsocket.service;
import com.teavamc.transsocket.domain.User;
import java.util.List;
/**
* @author 张超 teavamc
* @Description:TODO
* @ClassName IUserService
* @date 2019/4/29 21:40
**/
public interface IUserService {
public List<User> selectUser();
}
Service实现类
package com.teavamc.transsocket.service.impl;
import com.teavamc.transsocket.domain.User;
import com.teavamc.transsocket.mapper.UserMapper;
import com.teavamc.transsocket.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @author 张超 teavamc
* @Description:TODO
* @ClassName UserServiceImpl
* @date 2019/4/29 21:43
**/
@Service
public class UserServiceImpl implements IUserService {
@Autowired
private UserMapper userMapper;
@Override
public List<User> selectUser(){
return userMapper.selectUser();
}
}
Mpper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.teavamc.transsocket.mapper.UserMapper">
<select id="selectUser" resultType="HashMap">
select Id,username,nickname,gender
from user
</select>
</mapper>
REST的GET API接口
package com.teavamc.transsocket.api;
import com.teavamc.transsocket.domain.ApiRes;
import com.teavamc.transsocket.service.IUserService;
import com.teavamc.transsocket.utils.ApiMaker;
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.RestController;
/**
* @author 张超 teavamc
* @Description:baseApi
* @ClassName baseApi
* @date 2019/4/28 22:57
**/
@RestController
@RequestMapping(value = "/api")
public class baseApi {
@Autowired
private IUserService userService;
/**
* baseApi
* @author 张超 teavamc
* @date 2019/4/28
* @return java.lang.String
*/
@GetMapping(value = "/base")
public ApiRes base(){
ApiRes res = new ApiRes();
res.put("data","Request Succeed");
return res;
}
@GetMapping(value = "/selectuser")
public ApiRes selectUser(){
return ApiMaker.putList(userService.selectUser());
}
}
测试
- 使用PostMan测试API的url
数据返回成功
后记
API中的ApiRes 对象是我用来封装我自己的JSON数据的,用户规范会返回。
本文的目的就是梳理如何使用Mybatis和Druid实现一个简单的后台CRUD雏形。
适合有基础的同学。