SpringBoot整合Mybatis
项目地址:https://gitee.com/qq343509740/SpringBoot-Mybatis
一、简单CRUD方法实现
1. 构建项目
使用 IDEA 开发工具
1). Create New Project
添加依赖: Web、MySQL、JDBC、MyBatis
2). pom.xml
jar包详细说明
<dependencies>
<!-- 支持JDBC数据库 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!-- 支持全栈式Web开发,包括Tomcat和spring-webmvc -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 添加Mybatis依赖包 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<!-- MySQL的JDBC驱动包,用JDBC连接MySQL数据库时必须使用该jar包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!-- 支持常规的测试依赖,包括JUnit、Hamcrest、Mockito以及spring-test模块 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
2. 创建数据库
CREATE TABLE user(
id INT(10) NOT NULL AUTO_INCREMENT COMMENT '编号',
name VARCHAR(50) NOT NULL COMMENT '用户名',
PRIMARY KEY(id)
)ENGINE=INNODB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;
3. 项目配置
1). 添加yml配置文件:application.yml
为什么使用yml?
yml配置文件在写的时候层次感强,而且最大限度减少代码量,推荐使用yml配置文件。
#配置mysql连接
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/test?userUnicode=true&characterEncoding=UTF-8
username: root
password: root
#配置mybatis
mybatis:
#配置xml映射路径
mapper-locations: classpath:mapper/*.xml
#配置实体类的别名
type-aliases-package: com.ray.mybatis.entity
configuration:
#开启驼峰命名法
map-underscore-to-camel-case: true
2). 在resources下创建mapper文件夹
根据yml配置文件中映射路径创建文件夹
3). 在Springboot启动类中添加对mapper包扫描@MapperScan
或者直接在Mapper类上添加注解@Mapper,建议使用@MapperScan,不然在每个Mapper都添加注解挺麻烦的。
@SpringBootApplication
@MapperScan("com.ray.mybatis.mapper")
public class MybatisApplication {
public static void main(String[] args) {
SpringApplication.run(MybatisApplication.class, args);
}
}
4. 编写代码
1). 实体类User
创建entity包/**
* @author Ray
* @date 2018/7/7 0007
* 用户实体类
*/
public class User {
/**
* 编号(主键)
*/
private int id;
/**
* 用户名
*/
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public User() {
}
public User(String name) {
this.name = name;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
}
2). 数据操作类UserMapper
创建mapper包
/**
* @author Ray
* @date 2018/7/7 0007
* 数据操作层-DAO
*/
public interface UserMapper {
/**
* 根据id获取用户信息
*/
public User selectById(Integer id);
/**
* 查询所有用户信息
*/
public List<User> list();
/**
* 新增用户信息
*/
public int insert(User user);
/**
* 修改用户信息
*/
public int update(User user);
/**
* 删除用户信息
*/
public int delete(Integer id);
}
3). UserMapper类映射UserMapper.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.ray.mybatis.mapper.UserMapper">
<!-- 新增用户信息 -->
<insert id="insert" parameterType="user">
INSERT INTO
user(name)
VALUES
(#{name})
</insert>
<!-- 修改用户信息 -->
<update id="update" parameterType="user">
UPDATE
user
SET
name=#{name}
WHERE
id=#{id}
</update>
<!-- 删除用户信息 -->
<delete id="delete">
DELETE
FROM
user
WHERE
id=#{id}
</delete>
<!-- 根据id获取用户信息 -->
<select id="selectById" resultType="user" parameterType="int">
SELECT
*
FROM
user
WHERE
id=#{id}
</select>
<!-- 查询所有用户信息 -->
<select id="list" resultType="user">
SELECT
*
FROM
user
</select>
</mapper>
4). 数据控制类UserController
创建controller包
/**
* @author Ray
* @date 2018/7/7 0007
* 数据控制层
*/
@RestController
public class UserController {
@Autowired
private UserMapper userMapper;
/**
* 根据id获取用户信息
* localhost:8080/user/2
*/
@GetMapping("/user/{id}")
public User selectById(@PathVariable("id")Integer id){
User user = userMapper.selectById(id);
return user;
}
/**
* 查询所有用户信息
* localhost:8080/users
*/
@GetMapping("/users")
public List<User> list(){
List<User> users = userMapper.list();
return users;
}
/**
* 新增用户信息
* localhost:8080/user?name=Ray1
*/
@PostMapping("/user")
public String insert(User user){
int result = userMapper.insert(user);
if(result == 1){
return "success";
}
return "fail";
}
/**
* 修改用户信息
* localhost:8080/user/2?name=Ray22
*/
@PutMapping("/user/{id}")
public String update(User user, @PathVariable("id") Integer id){
int result = userMapper.update(user);
if(result == 1){
return "success";
}
return "fail";
}
/**
* 删除用户信息
* localhost:8080/user/8
*/
@DeleteMapping("/user/{id}")
public String delete(@PathVariable("id") Integer id){
int result = userMapper.delete(id);
if(result == 1){
return "success";
}
return "fail";
}
}
5. 测试
新增用户信息-POST
根据id查询用户信息-GET
查询所有用户信息-GET
修改用户信息-PUT
删除用户信息-DELETE