(springBoot整合MyBatisPlus实现基本的增删改查功能&)
springBoot整合MyBatisPlus实现基本的增删改查功能&
项目结构
Pom.xml 资源文件
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.szewec</groupId>
<artifactId>demo-service</artifactId>
<version>0.0.1-SNAPSHOT</version>
<!-- <packaging>war</packaging> -->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<name>demo-service</name>
<description>示例服务</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.2.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencies>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>2.2.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.6.1</version>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.6.1</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.22</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>4.3.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<build>
<defaultGoal>compile</defaultGoal>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>com.szewec.ServiceApplication</mainClass>
<jvmArguments>-Dfile.encoding=UTF-8</jvmArguments>
<fork>true</fork>
<layout>ZIP</layout>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
application.yml 全局配置文件设置
##数据源地址
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
url: jdbc:postgresql://127.0.0.1:5432/postgres
username: postgres
password: 123456
driverClassName: org.postgresql.Driver
initialSize: 1
maxActive: 20
maxWait: 60000
application:
name: demo-service
##启用Mybatis
orm:
mybatis:
only: true
#mybatis
mybatis-plus:
mapper-locations: classpath:/mapper/*.xml
#实体扫描,多个package用逗号或者分号分隔
typeAliasesPackage: com.huawei.model
global-config:
#主键类型 0:"数据库ID自增", 1:"用户输入ID",2:"全局唯一ID (数字类型唯一ID)", 3:"全局唯一ID UUID";
id-type: 2
#字段策略 0:"忽略判断",1:"非 NULL 判断"),2:"非空判断"
field-strategy: 2
#驼峰下划线转换
db-column-underline: true
#刷新mapper 调试神器
refresh-mapper: true
#数据库大写下划线转换
#capital-mode: true
#序列接口实现类配置
#key-generator: com.baomidou.springboot.xxx
#逻辑删除配置
#logic-delete-value: 0
#logic-not-delete-value: 1
#自定义填充策略接口实现
#meta-object-handler: com.baomidou.springboot.xxx
#自定义SQL注入器
#sql-injector: com.baomidou.springboot.xxx
configuration:
map-underscore-to-camel-case: true
cache-enabled: false
## 服务器端口,自行设置
server:
port: 1111
## 服务注册中心地址
eureka:
instance:
status-page-url-path: /swagger-ui.html
## 日志
logging:
config: classpath:logback.xml
level:
root: debug
platform:
url: http://10.0.7.128:8080
##swagger配置
swagger:
##是否开启swagger文档
enable: true
##网关
host: 10.0.7.128:8080
##接口包(多个用,隔开)
basePackage: com.huawei.controller
##文档标题
title: 示例
##文档描述
description: 变更管理的功能
##文档版本
version: 1.0
Logback.xml日志配置文件
<configuration>
<!-- %m输出的信息,%p日志级别,%t线程名,%d日期,%c类的全名,,,, -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d %p (%file:%line\)- %m%n</pattern>
<charset>UTF8</charset>
</encoder>
</appender>
<appender name="basedatalog"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>basedata_log/basedata.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>basedata_log/basedata.log.%d.%i</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>64 MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<pattern>
%d %p (%file:%line\)- %m%n
</pattern>
<charset>UTF-8</charset> <!-- 此处设置字符集 -->
</encoder>
</appender>
<root level="info">
<appender-ref ref="STDOUT"/>
</root>
<logger name="com.szewec" level="DEBUG">
<appender-ref ref="basedatalog"/>
</logger>
</configuration>
Controller层
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.szewec.model.vo.PageBean;
import com.szewec.model.vo.Puser;
import com.szewec.service.PuserService;
import io.swagger.annotations.Api;
import org.apache.commons.lang.StringUtils;
import org.springframework.web.bind.annotation.*;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
@RestController
@EnableSwagger2
@Api("swaggerDemoController相关的api")
@RequestMapping("/api")
public class PuserController {
@Resource
private PuserService puserService;
@RequestMapping("/users/test")
public PageBean<Puser> getParamsTest(HttpServletRequest request, HttpServletResponse response) throws IOException {
String field = request.getParameter("field");
String keyword = request.getParameter("keyword");
ObjectMapper mapper = new ObjectMapper();
String s = "{\"total\":3,\"current\":1,\"list\":[{\"id\":1,\"name\":\"张三\",\"age\":23,\"sex\":\"女\",\"address\":\"成都\"},{\"id\":2,\"name\":\"李四\",\"age\":24,\"sex\":\"男\",\"address\":\"杭州\"},{\"id\":3,\"name\":\"王五\",\"age\":25,\"sex\":\"男\",\"address\":\"上海\"}]}";
if(StringUtils.isNotBlank(field)){
s = "{\"total\":3,\"current\":1,\"list\":[{\"id\":1,\"name\":\"张三111111\",\"age\":23,\"sex\":\"女\",\"address\":\"成都\"},{\"id\":2,\"name\":\"李四\",\"age\":24,\"sex\":\"男\",\"address\":\"杭州\"},{\"id\":3,\"name\":\"王五\",\"age\":25,\"sex\":\"男\",\"address\":\"上海\"}]}";
}
return mapper.readValue(s,new TypeReference<PageBean<Puser>>(){});
}
@RequestMapping("/users/query")
public PageBean<Puser> usersFuzzyQuery(HttpServletRequest request, HttpServletResponse response) throws IOException {
Puser puser = new Puser();
String field = request.getParameter("field");
String keyword = request.getParameter("keyword");
String current = request.getParameter("current");
if(null==current){
current="0";
}
if(StringUtils.isNotBlank(field)&&StringUtils.isNotBlank(keyword)){
if("name".equals(field)){
puser.setName(keyword);
}
if("address".equals(field)){
puser.setAddress(keyword);
}
}
List<Puser> usersList = puserService.usersFuzzyQuery(puser,Integer.valueOf(current));
PageBean<Puser> pageBean = new PageBean<Puser>(usersList.size(),Integer.valueOf(current),10);
pageBean.setList(usersList);
return pageBean;
}
@RequestMapping("/users/create")
public PageBean<Puser> createPuser(@RequestBody Puser puser) throws IOException {
int fid = (int)((Math.random()*9+1)*100000);
puser.setId(fid);
puserService.addUsers(puser);
PageBean<Puser> pageBean = new PageBean<Puser>();
List<Puser> usersList = puserService.usersFuzzyQuery(new Puser(),0);
pageBean.setCurrent(1);
pageBean.setTotal(3);
pageBean.setList(usersList);
return pageBean;
}
@RequestMapping("/users/update")
public Integer updatePuser(@RequestBody Puser puser) throws IOException {
System.out.println(puser);
Integer updateRows = puserService.updateUser(puser);
return updateRows;
}
@RequestMapping("/users/delete/{id}")
public Integer deletePuser(HttpServletRequest request, HttpServletResponse response, @PathVariable("id") Integer id) throws IOException {
System.out.println(id);
Integer deleteRows = puserService.deleteUser(id);
return deleteRows;
}
}
Service层
public interface PuserService {
//List<Puser> usersFuzzyQuery(Puser puser);
List<Puser> usersFuzzyQuery(Puser puser,Integer current);
void addUsers(Puser puser);
Integer updateUser(Puser puser);
Integer deleteUser(Integer id);
}
import javax.annotation.Resource;
import java.util.List;
@Service
public class PuserServiceImpl extends ServiceImpl<PuserMapper, Puser> implements PuserService {
@Resource
private PuserMapper puserMapper;
@Override
public List<Puser> usersFuzzyQuery(Puser puser,Integer current) {
List<Puser> usersList = puserMapper.usersFuzzyQuery(puser,current);
return usersList;
}
@Override
public void addUsers(Puser puser) {
boolean result = this.insert(puser);
}
@Override
public Integer updateUser(Puser puser) {
Integer ret = puserMapper.updateById(puser);
return ret;
}
@Override
public Integer deleteUser(Integer id) {
Integer ret = puserMapper.deleteById(id);
return ret;
}
}
Dao层
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface PuserMapper extends BaseMapper<Puser> {
// 模糊查询
List<Puser> usersFuzzyQuery(@Param("user") Puser puser,@Param("current") Integer current);
void addUsers(Puser puser);
}
Mybtais配置文件
<?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.huawei.mapper.PuserMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.huawei.model.vo.Puser">
<id column="fid" property="fid" />
<result column="name" property="name" />
<result column="age" property="age" />
<result column="sex" property="sex" />
<result column="address" property="address" />
</resultMap>
<select id="usersFuzzyQuery" resultMap="BaseResultMap">
SELECT * FROM p_user where 1=1
<if test='user.name!=null and user.name!=" "'>
AND name like CONCAT('%',#{user.name},'%')
</if>
<if test='user.address!=null and user.address!=" "'>
AND address like CONCAT('%',#{user.address},'%')
</if>
<if test='current!=null and current!=" "'>
limit 10 OFFSET #{1}
</if>
</select>
</mapper>
启动类
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
@RestController
@MapperScan("com.huawei.**.mapper")
public class ServiceApplication {
public static void main(String[] args) {
SpringApplication.run(ServiceApplication.class, args);
}
@RequestMapping("/index")
String index(){
return "Hello Basedata";
}
}