SpringBoot整合druid连接池+mybatis+通用mapper

首先是项目结构

SpringBoot整合druid连接池+mybatis+通用mapper_第1张图片

1、在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.0modelVersion>
    <parent>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-parentartifactId>
        <version>2.1.2.RELEASEversion>
        <relativePath/> 
    parent>
    <groupId>cn.com.springboot_mybatis_demogroupId>
    <artifactId>springboot_mybatis_demoartifactId>
    <version>0.0.1-SNAPSHOTversion>
    <name>springboot_mybatis_demoname>
    <description>Demo project for Spring Bootdescription>

    <properties>
        <java.version>1.8java.version>
        <mapper-spring-boot-starter.version>2.0.4mapper-spring-boot-starter.version>
        <druid-spring-boot-starter.version>1.1.10druid-spring-boot-starter.version>
        <mybatis-spring-boot-starter.version>2.0.0mybatis-spring-boot-starter.version>
    properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-jdbcartifactId>
        dependency>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-webartifactId>
        dependency>
        <dependency>
            <groupId>mysqlgroupId>
            <artifactId>mysql-connector-javaartifactId>
            <scope>runtimescope>
        dependency>
        <-- mybatis -->
        <dependency>
            <groupId>org.mybatis.spring.bootgroupId>
            <artifactId>mybatis-spring-boot-starterartifactId>
            <version>${mybatis-spring-boot-starter.version}version>
        dependency>
        <-- 偷个懒,使用lombok -->
        <dependency>
            <groupId>org.projectlombokgroupId>
            <artifactId>lombokartifactId>
            <optional>trueoptional>
        dependency>
        <-- 通用mapper -->
        <dependency>
            <groupId>tk.mybatisgroupId>
            <artifactId>mapper-spring-boot-starterartifactId>
            <version>${mapper-spring-boot-starter.version}version>
        dependency>
        <-- 数据连接池 -->
        <dependency>
            <groupId>com.alibabagroupId>
            <artifactId>druid-spring-boot-starterartifactId>
            <version>${druid-spring-boot-starter.version}version>
        dependency>

    dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-maven-pluginartifactId>
            plugin>
        plugins>
    build>

project>

2、修改application.properties

# 关闭banner
spring.main.banner-mode=off

# 配置服务器端口ip以及访问后缀
server.port=8080
server.servlet.context-path=/

# JDBC配置
spring.datasource.url = jdbc:mysql://localhost/mydatabase?useUnicode=true&characterEncoding=utf-8
spring.datasource.username = root
spring.datasource.password = root

# 连接池配置
spring.datasource.druid.initial-size = 1
spring.datasource.druid.min-idle = 1
spring.datasource.druid.max-active= 10

# mybatis配置        
mybatis.mapper-locations = classpath:springboot-mybatis-demo/src/main/java/com/springboot/mybatis/demo/mapper/*Mapper.xml
mybatis.configuration.map-underscore-to-camel-case = true
mybatis.configuration.use-generated-keys = true

3、在SpringbootApplication中添加@MapperScan("com.springboot.mybatis.demo.mapper")

package com.springboot.mybatis.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import tk.mybatis.spring.annotation.MapperScan;

@SpringBootApplication
@MapperScan("com.springboot.mybatis.demo.mapper")
public class SpringbootApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootApplication.class, args);
    }

}

4、编写实体,使用lombok可以不用写setter、getter、构造器、toString,但是要在类上添加@Data注解,使用通用Mapper还要在主键上添加@Id注解

@Data
@SuppressWarnings("unused")
public class User {
    /**
     * id 自增主键
     * username用户名
     * passwd 用户密码
     */
    @Id
    private Integer id;
    private String username;
    private String passwd;
}

5、编写返回结果类和常量接口

结果类

@SuppressWarnings("unused")
@Data
public class Result<T> {
    private Integer code;
    private T data;

    public Result() {
    }

    public Result(Integer code) {
        this.code = code;
    }

    public Result(Integer code, T data) {
        this.code = code;
        this.data = data;
    }
}

常量接口

public interface Constant {
    Integer OP_SUCCESS = 1;
    Integer OP_FAILED = 0;
}

6、编写Controller

@Controller
@RequestMapping("user")
public class UserController implements Constant {
    @Autowired
    private UserService userService;

    @RequestMapping("addUser")
    @ResponseBody
    public Result addUser(User user) {
        if (null == user) {
            return new Result<>(OP_FAILED);
        }
        return dealResult(userService.addUser(user));
    }

    @RequestMapping("deleteUser")
    @ResponseBody
    public Result deleteUser(int id) {
        if (0 >= id) {
            return new Result<>(OP_FAILED);
        }
        return dealResult(userService.deleteUser(id));
    }

    @RequestMapping("updateUser")
    @ResponseBody
    public Result updateUser(User user) {
        if (null == user) {
            return new Result<>(OP_FAILED);
        }
        return dealResult(userService.updateUser(user));
    }

    @RequestMapping("getUser")
    @ResponseBody
    public Result getUser(int id) {
        if (0 >= id) {
            return new Result<>(OP_FAILED);
        }
        User user = userService.getUser(id);
        return null == user ? new Result<>(OP_FAILED) : new Result<>(OP_SUCCESS, user);
    }

    /**
     * 在非查询时使用
     * @param opLine 操作行数
     * @return 返回Result
     */
    private Result dealResult(int opLine) {
        return 0 <= opLine ? new Result<>(OP_SUCCESS) : new Result<>(OP_FAILED);
    }
}

7、编写Service

@Service
public class UserService {

    @Autowired
    private UserMapper userMapper;

    public int addUser(User user) {
        return userMapper.insert(user);
    }

    public int deleteUser(int id) {
        User user = new User();
        user.setId(id);
        return userMapper.delete(user);
    }

    public int updateUser(User user) {
        return userMapper.updateByPrimaryKey(user);
    }

    public User getUser(int id) {
        return userMapper.selectByPrimaryKey(id);
    }
}

8、编写Mapper及mapper对应xml文件

public interface UserMapper extends Mapper<User> {
}


<mapper namespace="com.springboot.mybatis.demo.mapper.UserMapper">

mapper>

9 、测试

新增
SpringBoot整合druid连接池+mybatis+通用mapper_第2张图片
SpringBoot整合druid连接池+mybatis+通用mapper_第3张图片
SpringBoot整合druid连接池+mybatis+通用mapper_第4张图片
查询
SpringBoot整合druid连接池+mybatis+通用mapper_第5张图片
更新
SpringBoot整合druid连接池+mybatis+通用mapper_第6张图片
SpringBoot整合druid连接池+mybatis+通用mapper_第7张图片
删除
SpringBoot整合druid连接池+mybatis+通用mapper_第8张图片
SpringBoot整合druid连接池+mybatis+通用mapper_第9张图片

你可能感兴趣的:(Springboot,Mybatis,通用Mapper,Lombok,JavaEE)