上回讲了springboot项目的初始化与配置了swagger页面,算是可以进行最基础的开发了。
下面我就将我们的项目连接上数据库进行对数据库的操作,由于目前流行的ssm,所以我采用了mybatis,但是由于mybatis-plus进行了CURD的封装,所以我对mybatis-plus进行封装,使得开发更加快速,不过同时其中也有有问题的地方,比如说这类的方法我们可能有其他需求需要改动也不可避免。
1 项目配置
1.1 配置文件引入
首先肯定是pom文件的引入,先将我们所需要的依赖引入,因为我们使用的是mybatis-plus,所以需要导入的jar包包括mysql、jdbc、mybatis、mybatis-plus
如果引入lombok,使用lombok的@Data注解,那么实体类就会变得很清爽,所以我个人还是比较喜欢使用的,推荐引入,当然如果不引入使用get和set也是可以的
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!--jdbc-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!--mybatis-plus配置-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatisplus-spring-boot-starter</artifactId>
<version>1.0.5</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
<version>2.3</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency>
<!--lombok-->
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.10</version>
<scope>provided</scope>
</dependency>
1.2 数据库配置
配置好依赖之后我们就可以配置数据库得连接了
配置application.yml
#端口号
server:
port: 8088
#数据库的配置信息
spring:
datasource:
url: jdbc:mysql://localhost:3306/test #自己的数据库名称
username: root
password: root #账号和密码记得配置
mybatis:
#开启驼峰命名法
configuration:
map-underscore-to-camel-case: true
mybatis-plus:
# xml地址
mapper-locations: classpath:mapper/*Mapper.xml
# 实体扫描,多个package用逗号或者分号分隔
type-aliases-package: com.banana.demo.entity #自己的实体类地址
configuration:
# 这个配置会将执行的sql打印出来,在开发或测试的时候可以用
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
1.3 添加mybatis-plus的配置类MybatisPlusConfig
在com.banana.demo.config包下添加此配置类,进行了分页的配置
package com.banana.demo.config;
import com.baomidou.mybatisplus.plugins.PaginationInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MybatisPlusConfig {
@Bean
public PaginationInterceptor paginationInterceptor(){
PaginationInterceptor page = new PaginationInterceptor();
//设置方言类型
page.setDialectType("mysql");
return page;
}
}
2 配置mybatis-plus使用
配置好最基础的mybatis-plus的依赖项之后,我们就可以去进行我们所需要具体的数据表的实体类型的创建,以及代码业务逻辑的书写。
2.1 添加实体类
在com.banana.demo.entity包下添加实体类User如下
package com.banana.demo.entity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "User:用户表")
public class User {
@ApiModelProperty("用户 id")
private String id;
@ApiModelProperty("用户 姓名")
private String user_name;
@ApiModelProperty("用户 密码")
private String user_password;
public User() {
}
public User(String id, String user_name, String user_password) {
this.id = id;
this.user_name = user_name;
this.user_password = user_password;
}
}
2.2 添加Dao层的Mapper配置
我们要创建Mapper来进行映射,进行数据库的操作
2.2.1 添加xml文件
在resource目录下的mapper文件夹下创建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.banana.demo.dao.UserDao">
<resultMap id="user" type="com.banana.demo.entity.User"/>
<parameterMap id="user" type="com.banana.demo.entity.User"/>
<select id="getUserList" resultMap="user">
SELECT * FROM USER
</select>
</mapper>
2.2.2 添加Dao层的配置
在 com.banana.demo.dao 包下创建接口类 UserDao
由于我们使用的是mybatis-plus,所以我们的UserDao会继承BaseMapper,BaseMapper中有着对于数据库基本的CURD操作,我们就可以避免了重复造轮子的现象,从而提高了我们的效率。
当前UserDao中的getUserList()方法是基于BaseMapper中的方法之外新加的方法,在UserDao中只需要写BaseMapper之外的方法即可。
package com.banana.demo.dao;
import com.banana.demo.entity.User;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface UserDao extends BaseMapper<User> {
List<User> getUserList();
}
此时要注意的一点,我们在dao层使用了@Repository注解,那么我们就一定要在启动类加上 @MapperScan(“com.banana.demo.dao”) 注解来标识mapper的所在之处
3 Controller和启动类的编写
终于我们在所有的配置工作的完成之后可以进行业务代码的编写了,下面将逐一说明Controller层的编写把,对于controller中的各种注解此处只做一个简述,下一篇则会进行更加详细的解释说明
3.1 添加UserController类
在 com.banana.demo.controller 包下添加UserController 类
package com.banana.demo.controller;
import com.banana.demo.dao.UserDao;
import com.banana.demo.entity.User;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.toolkit.IdWorker;
import io.swagger.annotations.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping("/user")
@Api(tags = "用户操作")
public class UserController {
@Autowired
private UserDao userDao;
@GetMapping("getUserList")
@ApiOperation(value = "获取用户列表", notes = "获取所有的user信息")
public List<User> getUserList() {
return userDao.getUserList();
}
//条件查询
@GetMapping("getUserListByName")
@ApiOperation(value = "通过姓名获取用户列表", notes = "通过username获取user信息")
@ApiImplicitParam(name = "userName", value = "用户姓名", dataType = "String", required = true)
public List<User> getUserListByName(String userName) {
Map map = new HashMap();
map.put("user_name", userName);
return userDao.selectByMap(map);
}
//保存用户
@GetMapping("saveUser")
@ApiOperation(value = "添加用户", notes = "通过userName与userPassword保存user信息")
@ApiImplicitParams({
@ApiImplicitParam(name = "userName", value = "用户姓名", dataType = "String", required = true),
@ApiImplicitParam(name = "userPassword", value = "用户密码", dataType = "String")
})
public String saveUser(String userName, String userPassword) {
User user = new User(IdWorker.get32UUID(), userName, userPassword);
Integer index = userDao.insert(user);
if (index > 0) {
return "新增用户成功。";
} else {
return "新增用户失败。";
}
}
//保存用户
@PostMapping("saveUser")
@ApiOperation(value = "添加用户", notes = "通过userName与userPassword保存user信息")
public String saveUser(@RequestBody @ApiParam(name = "用户信息", value = "传入json格式", required = true) User user) {
user.setId(IdWorker.get32UUID());
Integer index = userDao.insert(user);
if (index > 0) {
return "新增用户成功。";
} else {
return "新增用户失败。";
}
}
//修改用户
@PatchMapping("updateUser")
@ApiOperation(value = "更新用户", notes = "更新user信息")
public String updateUser(@ApiParam(name = "用户对象", value = "传入json格式", required = true) User user) {
Integer index = userDao.updateById(user);
if (index > 0) {
return "修改用户成功,影响行数" + index + "行。";
} else {
return "修改用户失败,影响行数" + index + "行。";
}
}
//根据Id查询User
@GetMapping("getUserById/{id}")
@ApiOperation(value = "通过id查询用户", notes = "通过id查询user信息")
@ApiImplicitParam(name = "id", value = "用户id", dataType = "String", required = true)
public User getUserById(@PathVariable Integer id) {
return userDao.selectById(id);
}
//条件分页查询
@GetMapping("getUserListByPage")
@ApiOperation(value = "分页查询用户", notes = "通过page和size查询用户信息")
public List<User> getUserListByPage(Integer pageNumber, Integer pageSize) {
Page<User> page = new Page<>(pageNumber, pageSize);
EntityWrapper<User> entityWrapper = new EntityWrapper<>();
entityWrapper.eq("user_name", "xiaoli");
return userDao.selectPage(page, entityWrapper);
}
}
3.2 启动类添加注解@MapperScan注解
package com.banana.demo;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan("com.banana.demo.dao")
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
4 测试
至此我们的创建就结束了,下面我们可以就我们前面配置的内容,通过swagger页面做一下测试(可以看上一篇(一) SpringBoot 项目初始化 + 配置swagger页面)
本系列的文章
(一) SpringBoot 项目初始化 + 配置swagger页面