前两天刚看玩狂神的mybatis整合视频,在结尾出给我们留了一道将前两天的员工管理系统将mybatis整合进来的作业。现在附上我的作业成果,教你如何将mybatis进行整合进来吧。
对于将mybatis整合进入springboot大致有下列步骤
- 建立数据库并创建数据表
- 导入依赖,并在配置文件将参数配置好
- 建立mapper层,将数据库的增删查改操作的接口和实现类写好
- 编写好(service)层代码操作
- 建立controller层,把控制请求隐射的代码控制好
- 测试!
下面我就带大家遵循以上步骤教大家进行整合操作:
首先建立好数据表,并且插入相关的数据
create table Employee
(
id int(10) unsigned not null auto_increment primary key ,
lastname varchar(50) not null default '',
email varchar(50) default '',
gender int default null,
departmentId int(10) default null,
birth Date not null
)ENGINE=InnoDB AUTO_INCREMENT=33 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;
#插入数据
INSERT INTO `Employee` VALUES (1001, 'AA1', '24734674@qq.com', 1, 101, NOW()),
(1002, 'AA2', '24734674@qq.com', 0, 102, NOW()),
(1003, 'AA3', '24734674@qq.com', 1, 103, NOW()),
(1004, 'AA4', '24734674@qq.com', 0, 104, NOW()),
(1005, 'AA5', '24734674@qq.com', 1, 105, NOW());
#NOW()指的是获取当前时间
#查询该表所有数据
select * from Employee;
#查看表结构
desc Employee;
#删除数据表
drop table Employee;
create table Department (
id int(10) unsigned not null auto_increment primary key ,
departmentName varchar(50) default ''
)ENGINE=InnoDB AUTO_INCREMENT=33 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;
#插入数据
insert into Department
values (101,'教学部'),
(102,'市场部'),
(103,'教研部'),
(104,'运营部'),
(105,'后勤部');
select * from Department;
其次是在application.propertises配置数据库和mybatis的相关操作
#关闭thymeleaf模版引擎缓存 spring.thymeleaf.cache=false #设置首页 server.servlet.context-path=/kuang #我们的配置文件的真实位置 spring.messages.basename=i18n.login #日期时间格式化 spring.mvc.format.date=yyyy-MM-dd #数据库的配置文件 spring.datasource.username=root spring.datasource.password=000000 spring.datasource.url=jdbc:mysql://localhost:3306/Emp?useSSL=false&useUnicode=true&characterEncoding=UTF-8 spring.datasource.driver-class-name=com.mysql.jdbc.Driver #整合mybatis mybatis.type-aliases-package=com.kuang.pojo #用于创建mapper实现类的路径, mybatis.mapper-locations=classpath:mapper/*.xml
在pom.xml文件中导入这三个依赖:
org.springframework.boot spring-boot-starter-jdbcmysql mysql-connector-javaruntime
编写mapper层,EmployeeMapper,DepartmentMapper
Department接口:
package com.kuang.mapper;
import com.kuang.pojo.Department;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
import java.util.Collection;
@Repository
@Mapper
public interface DepartmentMapper {
//查询全部部门信息
Collection queryAllDepartment ();
//通过ID获取部门
Department queryAllDepartmentById(Integer id);
}
EmployeeMapper实现类:根据上述配置文件的最后一条来创建mapper实现类,否则会找不到该mapper实现类:
对应上述路径如图所示;
select * from Emp.department;
EmployeeMapper接口:
package com.kuang.mapper;
import com.kuang.pojo.Employee;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
import java.util.Collection;
@Repository
@Mapper
public interface EmployeeMapper {
//查询全部员工
Collection queryAllEmployee();
//通过Id查询员工
Employee queryAllEmployeeById(int id);
//增加一个员工
int addEmployee(Employee employee);
//更新操作
int updateEmployee(Employee employee);
//通过id删除一个员工
int deleteEmployeeById(int id);
}
Employee接口的实现类:
lastname,email,gender,departmentId,birth
mapper层写好之后,接下来写Service层
EmployeeService接口:
package com.kuang.service;
import com.kuang.pojo.Employee;
import org.springframework.stereotype.Service;
import java.util.Collection;
@Service
public interface EmployeeService {
//查询全部员工
Collection queryAllEmployee();
//通过id查询员工
Employee queryAllEmployeeById(Integer id);
//增加一个员工
int add(Employee employee);
//更新一个员工的数据
int update(Employee employee);
//删除一个员工的数据
int delete(int id);
}
EmployeeService接口的实现类:
package com.kuang.service;
import com.kuang.mapper.EmployeeMapper;
import com.kuang.pojo.Employee;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Collection;
@Service
public class EmployeeServiceImpl implements EmployeeService{
//通过set方法自动注入属性
@Autowired
private EmployeeMapper employeeMapper;
public void setEmployeeMapper(EmployeeMapper employeeMapper) {
this.employeeMapper = employeeMapper;
}
@Override
public Collection queryAllEmployee() {
return employeeMapper.queryAllEmployee();
}
@Override
public Employee queryAllEmployeeById(Integer id) {
return employeeMapper.queryAllEmployeeById(id);
}
@Override
public int add(Employee employee) {
return employeeMapper.addEmployee(employee);
}
@Override
public int update(Employee employee) {
return employeeMapper.updateEmployee(employee);
}
@Override
public int delete(int id) {
return employeeMapper.deleteEmployeeById(id);
}
}
DepartmentService接口:
package com.kuang.service;
import com.kuang.pojo.Department;
import org.springframework.stereotype.Service;
import java.util.Collection;
@Service
public interface DepartmentService {
//查询全部部门信息
Collection queryAllDepartment ();
//通过id查询部门信息
Department queryAllDepartmentById (int id);
}
DepartmentService接口实现类:
package com.kuang.service;
import com.kuang.mapper.DepartmentMapper;
import com.kuang.pojo.Department;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Collection;
@Service
public class DepartmentServiceImp implements DepartmentService{
@Autowired //自动注入DepartmentMapper
private DepartmentMapper departmentMapper;
//通过set方法实现
public void setDepartmentMapper(DepartmentMapper departmentMapper) {
this.departmentMapper = departmentMapper;
}
//查询所有的部门信息
@Override
public Collection queryAllDepartment() {
return departmentMapper.queryAllDepartment();
}
//通过id查询某个部门信息
@Override
public Department queryAllDepartmentById(int id) {
return departmentMapper.queryAllDepartmentById(id);
}
}
然后便是Controller层的编写了,可以在之前的基础上修改,但是我建议重写一个controller
package com.kuang.controller;
import com.kuang.pojo.Department;
import com.kuang.pojo.Employee;
import com.kuang.service.DepartmentService;
import com.kuang.service.EmployeeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import java.util.Collection;
@Controller
public class EmployeeControllerMybatis {
//将Service层的员工属性都注入进来
@Autowired
private DepartmentService departmentService;
@Autowired
private EmployeeService employeeService;
//进入到员工管理界面
@RequestMapping("/emps")
public String list(Model model){
System.out.println("进来了");//用来测试请求是否被收到
Collection employees = employeeService.queryAllEmployee();
model.addAttribute("emps",employees);
return "emp/list";
}
//去添加员工的界面
@GetMapping("/emp")
public String toAddpage(Model model){
//查出所有部门
Collection departments = departmentService.queryAllDepartment();
model.addAttribute("departments",departments);
return "emp/add";
}
//进行post提交数据
@PostMapping("/emp")
public String Add(Employee employee){
//添加操作
System.out.println(employee.toString());
employeeService.add(employee);
return "redirect:/emps";
}
//去更新页面
@GetMapping("/emp/{id}")
public String toUpdate(@PathVariable("id") Integer id,Model model){
//查出原来的数据
Employee employee =employeeService.queryAllEmployeeById(id);
model.addAttribute("emp",employee);
//查出所有部门
Collection departments =departmentService.queryAllDepartment();
System.out.println(departments.toString());
model.addAttribute("departments",departments);
return "emp/update";
}
//填写完更新信息后提交信息所用
@PostMapping("/updateEmp")
public String Update(Employee employee){
employeeService.update(employee);
return "redirect:/emps";
}
//删除员工操作
@RequestMapping("/delemp/{id}")
public String DeleteEmp(@PathVariable("id")Integer id){
employeeService.delete(id);
return "redirect:/emps";
}
//简单的小测试
@RequestMapping("/test")
public String test(){
return "/emp/text";
}
}
好的,如果你对我的作业还满意的话,给个小赞加关注一下吧。建议收藏这宝藏级别的教程



