近期开发项目用到的Spring Boot框架,唯一的感触就是配置文件少了很多,不需要自己配置了,而是由spring boot框架帮我们自动完成配置,用起来很方便,并且spring boot也提供了各种集成方案,这个demo集成mybatis,实现用户基本的增删改操作
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.0.1</version>
</dependency>
<dependency>
<groupId>javax.persistence</groupId>
<artifactId>persistence-api</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.32</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.58</version>
</dependency>
CREATE TABLE `user` (
`id` int(11) primary key,
`name` varchar(20) unique,
`age` int DEFAULT NULL,
`sex` varchar(5) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
## Mysql连接配置
### 用户名
mysql.properties.username=root
### 用户密码
mysql.properties.password=root
### 数据库名称
mysql.properties.database=testDB
# Spring Mysql系统配置
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.username=${mysql.properties.username}
spring.datasource.password=${mysql.properties.password}
spring.datasource.url=jdbc:mysql://localhost:3306/${mysql.properties.database}?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&failOverReadOnly=false
1、创建user表实体类
package top.it1002.springboot.model;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import javax.persistence.*;
import java.io.Serializable;
import static javax.persistence.GenerationType.IDENTITY;
/**
* user表实体类
*/
@Component
@Scope(value = "prototype")
@Entity
@Table(name = "user")
public class User implements Serializable {
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "id")
private Long id;
@Column(name = "name")
private String name;
@Column(name = "name")
private Long age;
@Column(name = "sex")
private String sex;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Long getAge() {
return age;
}
public void setAge(Long age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
", sex='" + sex + '\'' +
'}';
}
}
2、创建mybatis操作数据库Mapper类
package top.it1002.springboot.dao;
import org.apache.ibatis.annotations.*;
import org.springframework.stereotype.Repository;
import top.it1002.springboot.model.User;
import java.util.List;
@Repository
@Mapper
public interface UserMapper {
/**
* 查询所有用户
* @return
*/
@Select("select * from user")
public List<User> findAll();
/**
* 通过id查询用户信息
* @param id
* @return
*/
@Select("select * from user where id = #{id}")
public User selectOne(@Param("id") Long id);
/**
* 用户插入
* @param user
* @return
*/
@Insert("insert user values(null, #{user.name},#{user.age},#{user.sex})")
@Options(keyProperty="user.id",useGeneratedKeys=true)
int saveUser(@Param("user") User user);
/**
* 用户信息修改
* @param user
* @return
*/
@Update("update user set name = #{user.name}, age = #{user.age}, sex = #{user.sex} where id = #{user.id}")
int updateUser(@Param("user") User user);
/**
* 用户删除
* @param id
* @return
*/
@Delete("delete from user where id = #{id}")
int deleteUser(@Param("id") Long id);
}
3、创建用户业务层接口类
package top.it1002.springboot.service;
import top.it1002.springboot.model.User;
import java.util.List;
public interface UserService {
List<User> findAll() ;
User selectOne(Long id);
int saveUser(User user);
int updateUser(User user);
int deleteUser(Long id);
}
4、创建用户业务层接口实现类
package top.it1002.springboot.service.impl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import top.it1002.springboot.dao.UserMapper;
import top.it1002.springboot.model.User;
import top.it1002.springboot.service.UserService;
import java.util.List;
@Service(value = "userService")
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper mapper;
public List<User> findAll() {
return mapper.findAll();
}
@Override
public User selectOne(Long id) {
return mapper.selectOne(id);
}
@Override
public int saveUser(User user) {
return mapper.saveUser(user);
}
@Override
public int updateUser(User user) {
if(user == null){
return 0;
}
User user1 = mapper.selectOne(user.getId());
if(user.getAge() != null){
user1.setAge(user.getAge());
}
if(user.getName() != null){
user1.setName(user.getName());
}
if(user.getSex() != null){
user1.setSex(user.getSex());
}
return mapper.updateUser(user);
}
@Override
public int deleteUser(Long id) {
return mapper.deleteUser(id);
}
}
5、创建用户控制层类
package top.it1002.springboot.controller;
import com.alibaba.fastjson.JSONObject;
import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import top.it1002.springboot.domain.ErrResponseContent;
import top.it1002.springboot.domain.RightResponseContent;
import top.it1002.springboot.model.User;
import top.it1002.springboot.service.UserService;
import top.it1002.springboot.util.ParamUtil;
import javax.servlet.http.HttpServletRequest;
import java.util.Arrays;
import java.util.LinkedHashMap;
import java.util.List;
/**
* 用户控制器
*/
@RestController
public class UserController {
@Autowired
private UserService service;
@Autowired
private User user;
@Autowired
private RightResponseContent rigContent;
@Autowired
private ErrResponseContent errContent;
/**
* 获取用户列表api
* @return
*/
@RequestMapping(value = "/userList", method = RequestMethod.GET)
public Object findAll(){
List<User> userList = service.findAll();
if(userList != null && userList.size() > 0){
rigContent.setRet(true);
rigContent.setCode("1");
rigContent.setData(userList);
return rigContent;
} else {
errContent.setRet(false);
errContent.setCode("4");
errContent.setMsg("未查询到任何用户的信息!");
return errContent;
}
}
/**
* 获取用户信息api
* @param id
* @return
*/
@RequestMapping(value = "/getUser", method = RequestMethod.GET)
public Object getUser(@RequestParam("id") Long id){
boolean status = false;
if(id != null && id > 0){
User user = service.selectOne(id);
if(user != null){
rigContent.setRet(true);
rigContent.setCode("1");
rigContent.setData(user);
status = true;
return rigContent;
} else {
errContent.setRet(false);
errContent.setCode("4");
errContent.setMsg("未查询到用户id为:" + id + "的用户信息!");
return errContent;
}
} else {
errContent.setRet(false);
errContent.setCode("3");
errContent.setMsg("缺少必传参数:id !");
}
if(status){
return rigContent;
} else {
return errContent;
}
}
/**
* 用户添加api
* @param request
* @return
*/
@RequestMapping(value = "/addUser", method = RequestMethod.GET)
public Object addUser(HttpServletRequest request){
LinkedHashMap<String, String> params = ParamUtil.getRequestParams(request);
boolean status = false;
String checkParamStatus = ParamUtil.checkParam(params, Arrays.asList("name", "age", "sex"));
if(checkParamStatus == null) {
user.setName(params.get("name"));
user.setAge(Long.valueOf(params.get("age")));
user.setSex(params.get("sex"));
int saveStatus = service.saveUser(user);
if (saveStatus > 0) {
rigContent.setRet(true);
rigContent.setCode("1");
JSONObject data = new JSONObject();
data.put("id", saveStatus);
data.put("msg", "添加成功!");
rigContent.setData(data);
status = true;
} else {
errContent.setRet(false);
errContent.setCode("2");
errContent.setMsg("参数异常!请传递合法参数!");
}
} else {
errContent.setRet(false);
errContent.setCode("3");
errContent.setMsg("缺少必传参数" + checkParamStatus + "!");
}
if(status){
return rigContent;
}
return errContent;
}
/**
* 修改用户信息api
* @param request
* @return
*/
@RequestMapping(value = "/modifyUserInfo", method = RequestMethod.GET)
public Object modifyUserInfo(HttpServletRequest request){
LinkedHashMap<String, String> params = ParamUtil.getRequestParams(request);
boolean status = false;
String checkParam = ParamUtil.checkParam(params, Arrays.asList("id"));
if(checkParam == null){
if(params.containsKey("name") && !params.get("name").equals("")){
user.setName(params.get("name"));
}
if(params.containsKey("sex") && !params.get("sex").equals("")){
user.setSex(params.get("sex"));
}
if(params.containsKey("age") && !params.get("age").equals("")){
user.setAge(Long.valueOf(params.get("age")));
}
if(params.containsKey("id") && !params.get("id").equals("")){
user.setId(Long.valueOf(params.get("id")));
}
int userStatus = service.updateUser(user);
if(userStatus > 0){
rigContent.setRet(true);
rigContent.setCode("1");
JSONObject data = new JSONObject();
data.put("id", userStatus);
data.put("msg", "修改成功!");
rigContent.setData(data);
status = true;
} else {
errContent.setRet(false);
errContent.setCode("2");
errContent.setMsg("参数异常!请传递合法参数!");
}
} else {
errContent.setRet(false);
errContent.setCode("3");
errContent.setMsg("缺少必传参数" + checkParam + "!");
}
if(status){
return rigContent;
}
return errContent;
}
/**
* 用户删除api
* @param id
* @return
*/
@RequestMapping(value = "/deleteUser", method = RequestMethod.GET)
public Object deleteUser(@Param("id") Long id){
boolean status = false;
if(id != null && id > 0){
int deleteStatus = service.deleteUser(id);
if(deleteStatus > 0){
rigContent.setRet(true);
rigContent.setCode("1");
JSONObject data = new JSONObject();
data.put("id", deleteStatus);
data.put("msg", "删除成功!");
rigContent.setData(data);
status = true;
} else {
errContent.setRet(false);
errContent.setCode("2");
errContent.setMsg("参数异常!请传递合法参数!");
}
} else {
errContent.setRet(false);
errContent.setCode("3");
errContent.setMsg("缺少必传参数: id!");
}
if(status){
return rigContent;
}
return errContent;
}
}