一、建表
1、在本地创建一个名字为mybatis的数据库,该数据库中的department表的建表语句如下
CREATE TABLE `department` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`departmentName` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
1、springboot项目创建过程省略,pom.xml文件需要引入如下依赖:
log4j
log4j
1.2.17
org.springframework.boot
spring-boot-starter-data-jdbc
org.mybatis.spring.boot
mybatis-spring-boot-starter
2.1.1
mysql
mysql-connector-java
5.1.46
com.alibaba
druid
1.1.21
2、application.yml的配置如下:
spring:
datasource:
# 数据源基本配置
username: root
password: 123456
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/mybatis
type: com.alibaba.druid.pool.DruidDataSource
# 数据源其他配置
initialSize: 5
minIdle: 5
maxActive: 20
maxWait: 60000
timeBetweenEvictionRunsMillis: 60000
minEvictableIdleTimeMillis: 300000
validationQuery: SELECT 1
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
poolPreparedStatements: true
# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
filters: stat,wall,log4j
maxPoolPreparedStatementPerConnectionSize: 20
useGlobalDataSourceStat: true
connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
#引入部门和员工的创建表sql文件
# schema:
# - classpath:sql/department.sql
# - classpath:sql/employee.sql
# initialization-mode: ALWAYS
3、log4j.properties配置如下:为了测试只简单配置了日志
log4j.rootLogger=DEBUG, stdout
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
三、注解版代码如下:
1、目录层次如下图:下面的所有操作都是在该目录结构中操作 2、在bean文件夹下创建Department实体类,如下代码:
package com.rf.springboot.bean;
public class Department {
private Integer id;
private String departmentName;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getDepartmentName() {
return departmentName;
}
public void setDepartmentName(String departmentName) {
this.departmentName = departmentName;
}
@Override
public String toString() {
return "Department{" +
"id=" + id +
", departmentName='" + departmentName + '\'' +
'}';
}
}
3、在mapper文件夹下创建DepartmentMapper接口,如下代码:
package com.rf.springboot.mapper;
import com.rf.springboot.bean.Department;
import org.apache.ibatis.annotations.*;
/**
* 指定一个操作数据库的mapper
* @Mapper 如果mapper文件过多可以在springboot应用中加@MapperScan(value = "com.rf.springboot.mapper"),而不用每个mapper接口都加Mapper注解
* */
@Mapper
public interface DepartmentMapper {
@Select("select * from department where id=#{id}")
public Department getDepartmentId(Integer id);
@Delete("delete from department where id=#{id}")
public int deleteDepartmentId(Integer id);
@Options(useGeneratedKeys = true,keyProperty = "id")//新增时自动为主键id新增值
@Insert("insert into department(departmentName) values(#{departmentName})")
public int insertDepartment(Department department);
@Update("update department set departmentName=#{departmentName} where id=#{id}")
public int updateDepartment(Department department);
}
4、在controller文件夹下创建DepartmentController类,如下代码:
package com.rf.springboot.controller;
import com.rf.springboot.bean.Department;
import com.rf.springboot.mapper.DepartmentMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class DepartmentController {
@Autowired
DepartmentMapper departmentMapper;
/**
* 根据部门id查询
*/
@GetMapping("/dept/{id}")
public Department getDepartmentId(@PathVariable("id") Integer id){
return departmentMapper.getDepartmentId(id);
}
/**
* 新增部门数据
*/
@GetMapping("/dept")
public Department insertDepartment(Department department){
departmentMapper.insertDepartment(department);
return department;
}
}
5、启动springboot应用,在浏览器访问新增请求,如下图: 6、启动springboot应用,在浏览器访问查询请求,如下图: