項目目錄結構:
第一步:創建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);
}
}