springBoot整合MyBatisPlus实现基本的增删改查功能

(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";
    }
}

 

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wespten

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值