SpringBoot2.2.6整合mybatis3.5.4

項目目錄結構:
在這裏插入圖片描述

第一步:創建Maven項目並添加依賴

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
</dependency>
<!--引入SpringBoot-web組件:Sprint+Springmvc-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
    <exclusions>
        <exclusion>
            <groupId>org.junit.vintage</groupId>
            <artifactId>junit-vintage-engine</artifactId>
        </exclusion>
    </exclusions>
</dependency>

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

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.22</version>
</dependency>

<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.1.2</version>
</dependency>

<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.4</version>
</dependency>
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis-spring</artifactId>
    <version>2.0.4</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-autoconfigure</artifactId>
    <version>2.1.2</version>
</dependency>

<!--MyBatis的分頁攔截器-->
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>1.2.5</version>
</dependency>
<!--Spring事務處理-->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-tx</artifactId>
    <version>5.2.3.RELEASE</version>
</dependency>

第二步:修改application.yml代碼:

server:
  port: 80
  servlet:
    context-path: /sm

mybatis:
  #Mapper.xml所在的位置
  mapper-locations: classpath*:mapper/*.xml
  #Entity掃描的model包
  type-aliases-package: com.hc.bean

pagehelper:
  offset-as-page-num: true
  row-bounds-with-count: true
  support-methods-arguments: true
  reasonable: true
  params: count=countSql

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/db_test?useSSL=false&serverTimezone=UTC&characterEncoding=utf8&useUnicode=true
    username: root
    password: root
    type: com.alibaba.druid.pool.DruidDataSource

第三步:創建實體類:

Dept.java

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Dept implements Serializable {

    private static final long serialVersionUID = -5905468365052464606L;

    private int deptno;
    private String dname;
    private String loc;

    public Dept(String dname, String loc) {
        this.dname = dname;
        this.loc = loc;
    }
}

Emp.java

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Emp implements Serializable {
    private static final long serialVersionUID = -6972982976855187547L;
    private Integer empno;

    private String ename;

    private String job;

    private Integer mgr;

    private Date hiredate;

    private BigDecimal sal;

    private BigDecimal comm;

    private Byte deptno;

}

第四步:DeptMapper接口:

@Mapper
public interface DeptMapper {
    @Insert("insert into tb_dept(dname,loc) values(#{dname},#{loc})")
    @Options(useGeneratedKeys = true, keyProperty = "deptno", keyColumn = "deptno")
    void insert(Dept dept);

    @Select("select * from tb_dept where dname like #{dname}")
    List<Dept> selectByLikeDame(String dname);


    @Select("select * from tb_dept where deptno = #{deptno}")
    Dept selectByDeptno(int deptno);

    @Select("select dname from tb_dept wehre deptno = #{depnto}")
    String selectDnameByDeptno(int deptno);
}

第五步:映射文件

EmpMapper.java

@Mapper
public interface EmpMapper {
    Emp selectByPrimaryKey(Integer empno);
}

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.hc.mapper.EmpMapper">
  <select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultType="Emp">
    select
    empno, ename, job, mgr, hiredate, sal, comm, deptno
    from tb_emp
    where empno = #{empno,jdbcType=INTEGER}
  </select>
</mapper>

第六步:Service層及實現類

DeptService.java

public interface DeptService {
    @Transactional
    Dept addDept(Dept dept);
    List<Dept> getByLikeDname(String dname);
    List<Dept> getByLikeDnameWithPagination(String dname, int pageNum, int pageSize);
}

DeptServiceImpl.java

@Service
public class DeptServiceImpl implements DeptService {
    @Autowired
    private DeptMapper deptMapper;
    @Override
    public Dept addDept(Dept dept) {
        deptMapper.insert(dept);
        return dept;
    }
    @Override
    public List<Dept> getByLikeDname(String dname) {
        return deptMapper.selectByLikeDame("%" + dname + "%");
    }
    @Override
    public List<Dept> getByLikeDnameWithPagination(String dname, int pageNum, int pageSize) {
        PageHelper.startPage(pageNum, pageSize);
        List<Dept> depts = deptMapper.selectByLikeDame("%" + dname + "%");
        PageInfo<Dept> pageInfo = new PageInfo<>(depts);
        System.out.println(pageInfo);
        return depts;
    }
}

EmpService.java

public interface EmpService {
    Emp getByPrimaryKey(Integer empno);
}

EmpServiceImpl.java

@Service
public class EmpServiceImpl implements EmpService {
    @Autowired
    private EmpMapper empMapper;
    @Override
    public Emp getByPrimaryKey(Integer empno) {
        return empMapper.selectByPrimaryKey(empno);
    }
}

第七步:Controller層代碼:

DeptController.java

@RestController
@RequestMapping(value = "/dept")
public class DeptController {
    @Autowired
    private DeptService deptService;

    @RequestMapping("/getByLikeDname/{dname}")
    public List<Dept> getByLikeDname(@PathVariable("dname") String dname) {
        return deptService.getByLikeDname(dname);
    }
    @RequestMapping("/getByLikeDnameWithPagination/{dname}/{pageNum}/{pageSize}")
    public List<Dept> getByLikeDnameWithPagination(@PathVariable("dname") String dname,
                                                @PathVariable("pageNum") int pageNum,
                                                @PathVariable("pageSize") int pageSize) {
        return deptService.getByLikeDnameWithPagination(dname, pageNum, pageSize);
    }
    @RequestMapping("addDept/{dname}/{loc}")
    public Dept addDept(@PathVariable("dname") String dname,
                        @PathVariable("loc") String loc) {
        Dept dept = new Dept(dname, loc);
        return deptService.addDept(dept);
    }
}

EmpController.java

@RestController
@RequestMapping(value = "/emp")
public class EmpController {
    @Autowired
    private EmpService empService;

    @RequestMapping("/getEmpByEmpno/{empno}")
    public Emp getEmpByEmpno(@PathVariable("empno") Integer empno){
        return  empService.getByPrimaryKey(empno);
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章