Spring Boot 整合MyBatis、Druid连接池、PageHelper插件

SpringBoot整合MyBatis


1 导入依赖

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>

        <!--  数据库相关 -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.2.0</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.4.0</version>
        </dependency>
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-autoconfigure</artifactId>
            <version>1.4.0</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.2.6</version>
        </dependency>


        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>1.5.4.RELEASE</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>2.4</version>
            </plugin>
        </plugins>
    </build>

2 在application.properties或者application.yml中配置数据库信息

我这里是在application.yml中配置的

#配置数据库信息 数据源为DruidDataSource
spring:
  datasource:
    username: root
    password: 1234
    url: jdbc:mysql:///emp_db?serverTimezone=Asia/Shanghai&characterEconding=utf8
    driver-class-name: com.mysql.cj.jdbc.Driver
    type: com.alibaba.druid.pool.DruidDataSource
#mybatis扫描
mybatis:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  mapper-locations: classpath:mapper/*.xml
#端口号的更改
server:
  port: 8085
#pagehelper插件的配置
pagehelper:
  helper-dialect: mysql
  reasonable: true
  support-methods-arguments: true

3 根据数据库创建实体类

数据库中两张表为这样的

 

 

import lombok.Data;
import java.io.Serializable;
import java.util.Date;

@Data
public class Emp implements Serializable {

    private Integer empno;

    private String ename;

    private String job;

    private Integer deptno;

    private Date hireday;
}
import lombok.Data;
import java.io.Serializable;

@Data
public class DepartMent implements Serializable {

    private Integer deptno;

    private String dname;

    private String loc;
}

 因为需要有连表查询,所以我多建了一个工具类

import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.Date;

@Data
public class Emp_Department implements Serializable {

    private Integer empno;

    private String ename;

    private String job;

    private Integer deptno;

    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date hireday;

    private String dname;

    private String loc;
}
 

4 创建mapper

EmpMapper

import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface EmpMapper {

    List<Emp_Department> findAll();

    void deleteAll(Integer[] empnos);

    void updateById(Emp emp);

    void deleteById(Integer empno);

    void add(Emp emp);

    Emp_Department findById(Integer empno);
}

​DeptMapper

import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface DeptMapper {
    DepartMent findById(Integer deptno);

    List<DepartMent> findAll();
}

5 在src\main\resources\mapper路径下创建对应的Mapper.xml文件

EmpMapper.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.qf.mapper.EmpMapper">

    <resultMap id="empMap" type="com.qf.pojo.Emp_Department">
        <id column="empno" property="empno"></id>
        <result column="ename" property="ename"></result>
        <result column="job" property="job"></result>
        <result column="deptno" property="deptno"></result>
        <result column="hireday" property="hireday"></result>
        <result column="dname" property="dname"></result>
        <result column="loc" property="loc"></result>
    </resultMap>

    <sql id="baseSql">
        empno,ename,job,deptno,hireday,dname,loc
    </sql>

    <select id="findAll" resultMap="empMap">
        select empno,ename,job,a.deptno,hireday,dname,loc
        from emp_tb a
        inner join department_tb b
        on a.deptno = b.deptno
    </select>

    <select id="findById" resultMap="empMap">
        select empno,ename,job,a.deptno,hireday,dname,loc
        from emp_tb a
        inner join department_tb b
        on a.deptno = b.deptno
        where empno = #{empno}
    </select>

    <delete id="deleteAll">
        delete from emp_tb
        where empno in
        <foreach collection="array" separator="," open="(" close=")" item="empno">
            #{empno}
        </foreach>
    </delete>

    <delete id="deleteById">
        delete from emp_tb
        where empno = #{empno}
    </delete>

    <insert id="add">
        insert into emp_tb(ename,job,deptno,hireday)
        values (#{ename},#{job},#{deptno},#{hireday})
    </insert>

    <update id="updateById">
        update emp_tb
        set ename = #{ename},job = #{job},deptno = #{deptno},hireday = #{hireday}
        where empno = #{empno}
    </update>

</mapper>

DeptMapper.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.qf.mapper.DeptMapper">

    <resultMap id="deptMap" type="com.qf.pojo.DepartMent">
        <id column="deptno" property="deptno"></id>
        <result column="dname" property="dname"></result>
        <result column="loc" property="loc"></result>
    </resultMap>

    <sql id="baseSql">
        deptno,dname,loc
    </sql>

    <select id="findAll" resultMap="deptMap">
        select <include refid="baseSql"></include>
        from department_tb
    </select>

    <select id="findById" resultMap="deptMap">
        select <include refid="baseSql"></include>
        from department_tb
        where deptno = #{deptno}
    </select>

</mapper>

6.创建service

EmpService

import java.util.List;

public interface EmpService {
    List<Emp_Department> findAll();

    void add(Emp emp);

    void deleteAll(Integer[] empnos);

    void deleteById(Integer empno);

    void updateById(Emp emp);

    Emp_Department findById(Integer empno);
}
import java.util.List;

public interface DeptService {
    DepartMent findById(Integer deptno);

    List<DepartMent> findAll();
}

7 创建serviceImpl

mport org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class EmpServiceImpl implements EmpService {

    @Autowired
    private EmpMapper empMapper;

    @Override
    public List<Emp_Department> findAll() {
        return empMapper.findAll();
    }

    @Override
    public void add(Emp emp) {
        empMapper.add(emp);
    }

    @Override
    public void deleteAll(Integer[] empnos) {
        empMapper.deleteAll(empnos);
    }

    @Override
    public void deleteById(Integer empno) {
        empMapper.deleteById(empno);
    }

    @Override
    public void updateById(Emp emp) {
        empMapper.updateById(emp);
    }

    @Override
    public Emp_Department findById(Integer empno) {
        Emp_Department emp_department = empMapper.findById(empno);
        return emp_department;
    }


}
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class DeptServiceImpl implements DeptService {

    @Autowired
    private DeptMapper deptMapper;

    @Override
    public DepartMent findById(Integer deptno) {
        DepartMent departMent = deptMapper.findById(deptno);
        return departMent;
    }

    @Override
    public List<DepartMent> findAll() {
      List<DepartMent> list = deptMapper.findAll();
      return list;
    }
}
 

 8 创建controller

EmpController

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("emp")
public class EmpController {

    @Autowired
    private EmpService empService;


    @RequestMapping("findAll")
    public List<Emp_Department> findAll(){
        return empService.findAll();
    }

    @RequestMapping("findByPage")
    public PageInfo findByPage(@RequestParam(value = "pageNum",required = false,defaultValue = "1") Integer pageNum,
                               @RequestParam(value = "pageSize",required = false,defaultValue = "3") Integer pageSize){
        PageHelper.startPage(pageNum,pageSize);

        List<Emp_Department> list = empService.findAll();

        PageInfo<Emp_Department> listPageInfo = new PageInfo<>(list);

        return listPageInfo;
    }

    @RequestMapping("findById")
    public Emp_Department findById(@RequestParam(value = "empno") Integer empno){
        Emp_Department emp_department = empService.findById(empno);
        return emp_department;
    }

    @RequestMapping("addEmp")
    public String add(@RequestBody  Emp emp){
        empService.add(emp);
        return "Success";
    }

    @RequestMapping("deleteById")
    public String deleteById(Integer empno){
        empService.deleteById(empno);
        return "Success";
    }

    @RequestMapping("deleteAll")
    public String deleteAll(Integer[] empnos){
        empService.deleteAll(empnos);
        return "Success";
    }

    @RequestMapping("update")
    public String updateById(@RequestBody Emp emp){
        empService.updateById(emp);
        return "Success";
    }

}

DeptController

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
@RequestMapping("dept")
public class DeptController {

    @Autowired
    private DeptService deptService;

    @RequestMapping("findAll")
    public List<DepartMent> findAll(){
        List<DepartMent> list = deptService.findAll();
        return list;
    }

    @RequestMapping("findById")
    public DepartMent findById(@RequestParam("deptno") Integer deptno){
        DepartMent departMent = deptService.findById(deptno);
        return departMent;
    }

}

9启动配置类,进行测试(注意:需要在启动类上添加@MapperScan扫描Mapper)

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

@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
@MapperScan("com.qf.mapper")
public class ManagerApplication {

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

}

启动工程,进行测试

查找全部

 分页查找

 增删改的就不进行测试了,伙伴们可以自行测试

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

宇智波波奶茶

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

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

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

打赏作者

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

抵扣说明:

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

余额充值