一、環境要求
- 開發工具:Intellij IDEA 2017.3.3
- JDK:1.8.0_151
- maven:apache-maven-3.5.2
二、整合Mybatis
SpringBoot整合Mybatis,並實現簡單的增刪改查(CRUD)。
1、創建demo工程
Create New Project
New Project-Spring Initializr
Next 填寫工程信息
Next添加依賴關係,WEB依賴及SQL、Mybatis
IDEA創建工程後目錄結構如下
查看IDEA默認添加的POM依賴關係配置。
web依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
MySQL依賴
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
Mybatis依賴
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.1</version>
</dependency>
2、數據準備
Mysql中新建名稱爲test的數據庫,並新建user表。
CREATE DATABASE test;
CREATE TABLE `user` (
`id` INT (11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
`name` VARCHAR (30),
`age` INT (10),
`address` VARCHAR (150)
)ENGINE=INNODB AUTO_INCREMENT=1000 DEFAULT CHARSET=gbk;
user表機構如下
3、配置數據源
修改properties文件爲yml文件(yml結構更清晰直觀),添加數據源配置。
4、新建Userying'she對象
New Package entity
package com.springboot.demo.entity;
public class User {
private Integer id;
private String name;
private Integer age;
private String address;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
5、新建UserMapper對象
新建mapper文件目錄,並新增UserMapper類,在類中新增CRUD方法。
package com.springboot.demo.mapper;
import com.springboot.demo.entity.User;
import org.apache.ibatis.annotations.*;
import java.util.List;
@Mapper
public interface UserMapper {
//新增
@Insert("insert into user (name,age,address) values (#{name},#{age},#{address})")
public int save(User user);
//更新
@Update("update user set name = #{name},age = #{age},address = #{address} where id = #{id}")
public void update(User user);
//根據ID查詢
@Select("select * from user where id = #{id}")
public User selectUserById(@Param("id") Integer id);
//查詢全部記錄
@Select("select * from user")
public List<User> findAll();
//刪除記錄-刪除後返回列表
@Delete("delete from user where id = #{id}")
public void delete(@Param("id") Integer id);
}
6、測試
分別創建controller目錄及service目錄,添加業務邏輯測試CRUD是否可行。
service
package com.springboot.demo.service;
import com.springboot.demo.entity.User;
import java.util.List;
public interface UserService {
//新增
public List<User> save(User user);
//更新
public User update(User user);
//查詢
public User selectUserById(Integer id);
public List<User> findAll();
//刪除
public List<User> delete(Integer id);
}
package com.springboot.demo.service.impl;
import com.springboot.demo.entity.User;
import com.springboot.demo.mapper.UserMapper;
import com.springboot.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public List<User> save(User user) {
//新增一條記錄
userMapper.save(user);
//返回全部記錄的列表
return userMapper.findAll();
}
@Override
public User update(User user) {
//更新記錄
userMapper.update(user);
return userMapper.selectUserById(user.getId());
}
@Override
public User selectUserById(Integer id) {
return userMapper.selectUserById(id);
}
@Override
public List<User> findAll() {
return userMapper.findAll();
}
@Override
public List<User> delete(Integer id) {
userMapper.delete(id);
return userMapper.findAll();
}
}
controller
package com.springboot.demo.controller;
import com.springboot.demo.entity.User;
import com.springboot.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
@RequestMapping(value = "/user")
public class UserController {
@Autowired
private UserService userService;
/**
* 新增記錄
* */
@RequestMapping(value = "/save")
public List<User> saveUser(String name,Integer age,String address){
User user = new User();
user.setName(name);
user.setAge(age);
user.setAddress(address);
return userService.save(user);
}
//查詢
@RequestMapping(value = "/findbyid")
public User findUserById(Integer id){
return userService.selectUserById(id);
}
@RequestMapping(value = "findall")
public List<User> findAll(){
return userService.findAll();
}
//更新
@RequestMapping(value = "/update")
public User updateUser(Integer id,String name,Integer age,String address){
User user = new User();
user.setId(id);
user.setName(name);
user.setAge(age);
user.setAddress(address);
return userService.update(user);
}
//刪除
@RequestMapping(value = "/delete")
public List<User> deleteUser(Integer id){
return userService.delete(id);
}
}
啓動工程
新增訪問地址:http://localhost:8080/user/save?name=zhouxingchi&age=50&address=xianggang
更新請求地址:http://localhost:8080/user/update?id=6&name=周星馳&age=51&address=中國香港
查詢請求地址:http://localhost:8080/user/findbyid?id=7
http://localhost:8080/user/findall
刪除請求地址:http://localhost:8080/user/delete?id=7