目前的大环境下,使用Mybatis作为持久层框架还是占了绝大多数的,下面我们来说一下使用Mybatis的姿势一:零配置注解开发。
1.在pom文件中添加相关依赖坐标
<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> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.3.RELEASE</version> </parent> <groupId>com.neuedu</groupId> <artifactId>10-spring-boot-mybatis-01</artifactId> <version>0.0.1-SNAPSHOT</version> <dependencies> <!-- SpringBoot启动器 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- MyBatis的依赖坐标 --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.2</version> </dependency> <!-- MySQL驱动的依赖坐标 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> </dependencies> </project>
2.创建配置文件(application.yml)
spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/mydb?characterEncoding=UTF-8&serverTimezone=UTC username: root password: root
3.创建启动类
package com.neuedu; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; /** * SpringBoot 整合 MyBatis 方式一 * 启动类 * @author 清水三千尺 * */ @SpringBootApplication //这样就不需要在每一个mapper接口上添加@mapper注解 @MapperScan("com.neuedu.mapper") public class App { public static void main(String[] args) throws Exception { SpringApplication.run(App.class, args); } }
4.创建数据库表对应实体类
package com.neuedu.po; import org.springframework.stereotype.Component; /** * 数据库表Dept对应的实体类 * @author 清水三千尺 * */ @Component public class Dept { private Integer deptno;//部门编号 private String dname;//部门名称 private String loc;//部门所在地 public Integer getDeptno() { return deptno; } public void setDeptno(Integer deptno) { this.deptno = deptno; } public String getDname() { return dname; } public void setDname(String dname) { this.dname = dname; } public String getLoc() { return loc; } public void setLoc(String loc) { this.loc = loc; } public Dept() {} public Dept(Integer deptno, String dname, String loc) { super(); this.deptno = deptno; this.dname = dname; this.loc = loc; } @Override public String toString() { return "Dept [deptno=" + deptno + ", dname=" + dname + ", loc=" + loc + "]"; } }
5.创建Mapper接口
package com.neuedu.mapper; import java.util.List; import org.apache.ibatis.annotations.Delete; import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Update; import com.neuedu.po.Dept; /** * 部门操作接口 * @author 清水三千尺 * */ public interface DeptMapper { //查询所有部门信息 @Select("SELECT * FROM DEPT") public List<Dept> selectAllDepts(); //新增一个部门 @Insert("INSERT INTO DEPT (DEPTNO,DNAME,LOC) VALUES (#{deptno},#{dname},#{loc})") public int insertDept(Dept dept); //根据部门编号修改部门信息 @Update("UPDATE DEPT SET DNAME=#{dname},LOC=#{loc} WHERE DEPTNO =#{deptno}") public int updateDeptByDeptno(Dept dept); //根据部门编号删除部门信息 @Delete("DELETE FROM DEPT WHERE DEPTNO =#{deptno}") public int deleteDeptByDeptno(Dept dept); }
6.创建Service接口
package com.neuedu.service; import java.util.List; import com.neuedu.po.Dept; public interface DeptService { public List<Dept> selectAllDepts(); public int insertDept(Dept dept); public int updateDeptByDeptno(Dept dept); public int deleteDeptByDeptno(Dept dept); }
7.创建Service接口实现类
package com.neuedu.service.impl; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.neuedu.mapper.DeptMapper; import com.neuedu.po.Dept; import com.neuedu.service.DeptService; @Service public class DeptServiceImpl implements DeptService { @Autowired private DeptMapper deptMapper; @Override public List<Dept> selectAllDepts() { return deptMapper.selectAllDepts(); } @Override public int insertDept(Dept dept) { return deptMapper.insertDept(dept); } @Override public int updateDeptByDeptno(Dept dept) { return deptMapper.updateDeptByDeptno(dept); } @Override public int deleteDeptByDeptno(Dept dept) { return deptMapper.deleteDeptByDeptno(dept); } }
8.创建Controller
package com.neuedu.controller; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.neuedu.po.Dept; import com.neuedu.service.DeptService; @RestController @RequestMapping("/dept") public class DeptController { @Autowired private DeptService deptService; @RequestMapping("/findAll") public List<Dept> selectAllDepts(){ return deptService.selectAllDepts(); } @RequestMapping("/insertDept") public int insertDept(Dept dept) { return deptService.insertDept(dept); } @RequestMapping("/updateDeptByDeptno") public int updateDeptByDeptno(Dept dept) { return deptService.updateDeptByDeptno(dept); } @RequestMapping("/deleteDeptByDeptno") public int deleteDeptByDeptno(Dept dept) { return deptService.deleteDeptByDeptno(dept); } }