案例目的
熟练使用SpringBoot三层架构,MyBatis与数据库的操作及Mysql语句练习
案例详情
1.项目功能分析
可以实现部门表及员工表数据的增删改查
2.数据库设计:
员工信息表(emp):
部门信息表(dept):
目录
-- 员工管理(带约束) create table emp ( id int unsigned primary key auto_increment comment 'ID', username varchar(20) not null unique comment '用户名', password varchar(32) default '123456' comment '密码', name varchar(10) not null comment '姓名', gender tinyint unsigned not null comment '性别, 说明: 1 男, 2 女', image varchar(300) comment '图像', job tinyint unsigned comment '职位, 说明: 1 班主任,2 讲师, 3 学工主管, 4 教研主管, 5 咨询师', entrydate date comment '入职时间', dept_id int unsigned comment '部门ID', create_time datetime not null comment '创建时间', update_time datetime not null comment '修改时间' ) comment '员工表'; INSERT INTO emp (id, username, password, name, gender, image, job, entrydate,dept_id, create_time, update_time) VALUES (1,'jinyong','123456','金庸',1,'1.jpg',4,'2000-01-01',2,now(),now()), (2,'zhangwuji','123456','张无忌',1,'2.jpg',2,'2015-01-01',2,now(),now()), (3,'yangxiao','123456','杨逍',1,'3.jpg',2,'2008-05-01',2,now(),now()), (4,'weiyixiao','123456','韦一笑',1,'4.jpg',2,'2007-01-01',2,now(),now()), (5,'changyuchun','123456','常遇春',1,'5.jpg',2,'2012-12-05',2,now(),now()), (6,'xiaozhao','123456','小昭',2,'6.jpg',3,'2013-09-05',1,now(),now()), (7,'jixiaofu','123456','纪晓芙',2,'7.jpg',1,'2005-08-01',1,now(),now()), (8,'zhouzhiruo','123456','周芷若',2,'8.jpg',1,'2014-11-09',1,now(),now()), (9,'dingminjun','123456','丁敏君',2,'9.jpg',1,'2011-03-11',1,now(),now()), (10,'zhaomin','123456','赵敏',2,'10.jpg',1,'2013-09-05',1,now(),now()), (11,'luzhangke','123456','鹿杖客',1,'11.jpg',5,'2007-02-01',3,now(),now()), (12,'hebiweng','123456','鹤笔翁',1,'12.jpg',5,'2008-08-18',3,now(),now()), (13,'fangdongbai','123456','方东白',1,'13.jpg',5,'2012-11-01',3,now(),now()), (14,'zhangsanfeng','123456','张三丰',1,'14.jpg',2,'2002-08-01',2,now(),now()), (15,'yulianzhou','123456','俞莲舟',1,'15.jpg',2,'2011-05-01',2,now(),now()), (16,'songyuanqiao','123456','宋远桥',1,'16.jpg',2,'2007-01-01',2,now(),now()), (17,'chenyouliang','123456','陈友谅',1,'17.jpg',NULL,'2015-03-21',NULL,now(),now());
3.环境搭建:
环境:Idea + Navicate + MySQL(8.0.23) + JDK(11)
1.创建一个空的工程,在工程中加入Maven模块
2.修改maven模块的相关属性
3.配置maven的依赖
4.配置Maven的其他设置
项目层级搭建
功能代码实现
文件配置
application.properties:文件配置
#数据库连接 spring.datasource.druid.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.druid.url=jdbc:mysql://localhost:3306/demo1 spring.datasource.druid.username=root spring.datasource.druid.password=123456 #开启mybatis的日志输出 mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl #开启数据库表字段 到 实体类属性的驼峰映射 mybatis.configuration.map-underscore-to-camel-case=true
pox.xml依赖引入
<!-- 引入分页插件 --> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.4.2</version> </dependency> <!-- 引入lombok依赖 --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <!-- 引入springboot+mybatis的druid依赖 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.2.8</version> </dependency>
实体类
1.部门实体类-Dept
package com.itcast.pojo; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import java.time.LocalDateTime; /** * 部门实体类 */ @Data @NoArgsConstructor @AllArgsConstructor public class Dept { private Integer id; //ID private String name; //部门名称 private LocalDateTime createTime; //创建时间 private LocalDateTime updateTime; //修改时间 }
2.员工实体类-Emp
package com.itcast.pojo; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import java.time.LocalDate; import java.time.LocalDateTime; /** * 员工实体类 */ @Data @NoArgsConstructor @AllArgsConstructor public class Emp { private Integer id; //ID private String username; //用户名 private String password; //密码 private String name; //姓名 private Short gender; //性别 , 1 男, 2 女 private String image; //图像url private Short job; //职位 , 1 班主任 , 2 讲师 , 3 学工主管 , 4 教研主管 , 5 咨询师 private LocalDate entrydate; //入职日期 private Integer deptId; //部门ID private LocalDateTime createTime; //创建时间 private LocalDateTime updateTime; //修改时间 } 3.响应实体类-Result
package com.itcast.pojo; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @Data @NoArgsConstructor @AllArgsConstructor public class Result { private Integer code;//响应码,1 代表成功; 0 代表失败 private String msg; //响应信息 描述字符串 private Object data; //返回的数据 //增删改 成功响应 public static Result success(){ return new Result(1,"success",null); } //查询 成功响应 public static Result success(Object data){ return new Result(1,"success",data); } //失败响应 public static Result error(String msg){ return new Result(0,msg,null); } }
4.分页实体类
package com.itcast.pojo; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import java.util.List; @Data @NoArgsConstructor @AllArgsConstructor public class PageBean { private Integer total; private List rows;//属性的名字要和前端协商好,要保持一致 }
部门管理
1.部门查询
功能开发
-
请求路径:/depts
-
请求方式:GET
-
请求参数:无
-
响应数据:json格式
控制层
DeptController
package com.itcast.controller; import com.itcast.pojo.Dept; import com.itcast.pojo.Result; import com.itcast.service.DeptService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.time.LocalDateTime; import java.util.List; @RestController @RequestMapping("/depts") @Slf4j public class DeptController { @Autowired private DeptService deptService; @GetMapping public Result findAllDept(){ List<Dept> all = deptService.findAll(); return Result.success(all); } }
业务层
DeptService
package com.itcast.service; import com.itcast.pojo.Dept; import java.util.List; public interface DeptService { List<Dept> findAll(); }
DeptServiceImpl
package com.itcast.service.impl; import com.itcast.mapper.DeptMapper; import com.itcast.pojo.Dept; import com.itcast.service.DeptService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.time.LocalDateTime; import java.util.List; @Service @Slf4j public class DeptServiceImpl implements DeptService { @Autowired private DeptMapper deptMapper; @Override public List<Dept> findAll() { List<Dept> depts = deptMapper.selectDeptAll(); return depts; } }
数据处理层
DeptMapper
package com.itcast.mapper; import com.itcast.pojo.Dept; import org.apache.ibatis.annotations.*; import org.springframework.stereotype.Repository; import org.springframework.stereotype.Service; import java.util.List; @Mapper public interface DeptMapper { //查询所有部门 @Select("select * from dept;") public List<Dept> selectDeptAll(); }
2.部门删除
功能开发
-
请求路径:/depts
-
请求方式:Delete
-
请求参数:id
-
响应数据:json格式
-
功能描述:根据id删除部门信息
控制层
DeptController
@DeleteMapping("/{id}") public Result DelectDeptById(@PathVariable("id") Integer id){ deptService.delectDeptOne(id); return Result.success(); }
业务层
DeptService
void delectDeptOne(Integer id);
DeptServiceImpl
@Override public void delectDeptOne(Integer id) { deptMapper.deleteDeptOne(id); }
数据处理层
DeptMapper
//根据id删除部门 @Delete("delete from dept where id = #{id}") void deleteDeptOne(Integer id);
3.部门增加
功能开发
-
请求路径:/depts
-
请求方式:POST
-
请求参数:前端请求参数 (Json格式):{ "name": "教研部" }
-
响应数据:json格式
控制层
DeptController
@PostMapping public Result AddDept(@RequestBody Dept dept){ deptService.insertDept(dept); return Result.success(); }
业务层
DeptService
void insertDept(Dept dept);
DeptServiceImpl
@Override public void delectDeptOne(Integer id) { deptMapper.deleteDeptOne(id); }
数据处理层
DeptMapper
//创建新部门 @Insert("insert into dept values(#{id},#{name},#{createTime},#{updateTime})") void insertDept(Dept dept);
4.部门修改
功能开发
-
请求路径:/depts
-
请求方式:PUT
-
请求参数:json格式
-
响应数据:json格式
控制层
DeptController
@PutMapping public Result UpdateDept(@RequestBody Dept dept){ dept.setUpdateTime(LocalDateTime.now()); deptService.updateDept(dept); return Result.success(); }
业务层
DeptService
void updateDept(Dept dept);
DeptServiceImpl
@Override public void updateDept(Dept dept) { deptMapper.updateDept(dept); }
数据处理层
DeptMapper
//修改部门名称 @Update("update dept set name=#{name},update_time=#{updateTime} where id=#{id}") void updateDept(Dept dept);
完整代码
DeptController
package com.itcast.controller; import com.itcast.pojo.Dept; import com.itcast.pojo.Result; import com.itcast.service.DeptService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.time.LocalDateTime; import java.util.List; @RestController @RequestMapping("/depts") @Slf4j public class DeptController { @Autowired private DeptService deptService; @GetMapping public Result findAllDept(){ List<Dept> all = deptService.findAll(); return Result.success(all); } @DeleteMapping("/{id}") public Result DelectDeptById(@PathVariable("id") Integer id){ deptService.delectDeptOne(id); return Result.success(); } @PostMapping public Result AddDept(@RequestBody Dept dept){ deptService.insertDept(dept); return Result.success(); } @PutMapping public Result UpdateDept(@RequestBody Dept dept){ dept.setUpdateTime(LocalDateTime.now()); deptService.updateDept(dept); return Result.success(); } }
DeptService
package com.itcast.service; import com.itcast.pojo.Dept; import java.util.List; public interface DeptService { List<Dept> findAll(); void delectDeptOne(Integer id); void insertDept(Dept dept); void updateDept(Dept dept); }
DeptServiceImpl
package com.itcast.service.impl; import com.itcast.mapper.DeptMapper; import com.itcast.pojo.Dept; import com.itcast.service.DeptService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.time.LocalDateTime; import java.util.List; @Service @Slf4j public class DeptServiceImpl implements DeptService { @Autowired private DeptMapper deptMapper; @Override public List<Dept> findAll() { List<Dept> depts = deptMapper.selectDeptAll(); return depts; } @Override public void delectDeptOne(Integer id) { deptMapper.deleteDeptOne(id); } @Override public void insertDept(Dept dept) { dept.setCreateTime(LocalDateTime.now()); dept.setUpdateTime(LocalDateTime.now()); deptMapper.insertDept(dept); } @Override public void updateDept(Dept dept) { deptMapper.updateDept(dept); } }
DeptMapper
package com.itcast.mapper; import com.itcast.pojo.Dept; import org.apache.ibatis.annotations.*; import org.springframework.stereotype.Repository; import org.springframework.stereotype.Service; import java.util.List; @Mapper public interface DeptMapper { //查询所有部门 @Select("select * from dept;") public List<Dept> selectDeptAll(); //根据id删除部门 @Delete("delete from dept where id = #{id}") void deleteDeptOne(Integer id); //创建新部门 @Insert("insert into dept values(#{id},#{name},#{createTime},#{updateTime})") void insertDept(Dept dept); //修改部门名称 @Update("update dept set name=#{name},update_time=#{updateTime} where id=#{id}") void updateDept(Dept dept); }
员工管理
员工查询
1.分页查询
功能开发
-
请求路径:/emps
-
请求方式:GET
-
请求参数:无
-
响应数据:json格式
-
功能描述:实现分页查询,查询所有员工信息
控制层
EmpController
package com.itcast.controller; import com.itcast.pojo.Emp; import com.itcast.pojo.PageBean; import com.itcast.pojo.Result; import com.itcast.service.EmpService; import lombok.extern.slf4j.Slf4j; import org.apache.ibatis.annotations.Delete; import org.apache.ibatis.annotations.Param; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.format.annotation.DateTimeFormat; import org.springframework.web.bind.annotation.*; import java.time.LocalDate; @Slf4j @RestController @RequestMapping("/emps") public class EmpController { @Autowired private EmpService empService; @GetMapping public Result findAllEmp(@RequestParam(defaultValue = "1") Integer page, @RequestParam(defaultValue = "10") Integer pageSize){ PageBean pageBean = empService.findAllEmp(page,pageSize); return Result.success(pageBean); } }
业务层
EmpService
package com.itcast.service; import com.itcast.pojo.Emp; import com.itcast.pojo.PageBean; import java.time.LocalDate; public interface EmpService { PageBean findAllEmp(Integer page,Integer pageSize); }
EmpServiceImpl
package com.itcast.service.impl; import com.github.pagehelper.Page; import com.github.pagehelper.PageHelper; import com.itcast.mapper.EmpMapper; import com.itcast.pojo.Emp; import com.itcast.pojo.PageBean; import com.itcast.service.EmpService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.web.bind.annotation.RequestParam; import java.time.LocalDate; import java.time.LocalDateTime; import java.util.List; @Service public class EmpServiceImpl implements EmpService { @Autowired private EmpMapper empMapper; @Override public PageBean findAllEmp(Integer page,Integer pageSize) { PageHelper.startPage(page,pageSize); List<Emp> list = empMapper.selectAll(); Page<Emp> pages = (Page<Emp>) list; return new PageBean((int)pages.getTotal(),pages.getResult()); } }
数据处理层
EmpMapper
package com.itcast.mapper; import com.itcast.pojo.Emp; import org.apache.ibatis.annotations.*; import java.time.LocalDate; import java.util.List; @Mapper public interface EmpMapper { @Select("select * from emp") public List<Emp> selectAll(); }
2.分页条件查询
功能开发
-
请求路径:/emps
-
请求方式:GET
-
请求参数:无
-
响应数据:json格式
-
功能描述:实现分页查询,查询所有员工信息
控制层
EmpController
@GetMapping("/find") public Result findAllEmpBySome(@RequestParam(defaultValue = "1") Integer page, @RequestParam(defaultValue = "10") Integer pageSize, String name, Short gender, @DateTimeFormat(pattern = "yyyy-MM-dd")LocalDate begin, @DateTimeFormat(pattern = "yyyy-MM-dd")LocalDate end ){ log.info("分页查询,参数:{},{},{},{},{},{}", page, pageSize,name, gender, begin, end); PageBean pageBean = empService.findAllEmpBySome(page,pageSize,name,gender,begin,end); return Result.success(pageBean); }
业务层
EmpService
PageBean findAllEmpBySome(Integer page, Integer pageSize, String name, Short gender, LocalDate begin, LocalDate end);
EmpServiceImpl
@Override public PageBean findAllEmpBySome(Integer page, Integer pageSize, String name, Short gender, LocalDate begin, LocalDate end) { PageHelper.startPage(page,pageSize); List<Emp> list = empMapper.findAllEmpBySome(page,pageSize,name,gender,begin,end); Page<Emp> pages = (Page<Emp>) list; return new PageBean((int)pages.getTotal(),pages.getResult()); }
数据处理层
EmpMapper
public List<Emp> findAllEmpBySome(Integer page, Integer pageSize, String name, Short gender, LocalDate begin, LocalDate end);
数据映射层
EmpMapper.xml
注意:EmpMapper.xml要与EmpMapper名称一致,namespace中的是EmpMapper的全类名称,resultType映射的返回值类型的全类名称
<?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.itcast.mapper.EmpMapper"> <!-- 条件分页查询 --> <select id="findAllEmpBySome" resultType="com.itcast.pojo.Emp"> select * from emp <where> <if test="name != null and name != ''"> name like concat('%',#{name},'%') </if> <if test="gender != null"> and gender = #{gender} </if> <if test="begin != null and end != null"> and entrydate between #{begin} and #{end} </if> </where> order by update_time desc </select> </mapper>
2.员工删除
功能开发
-
请求路径:/emps
-
请求方式:DELET
-
请求参数:id
-
响应数据:json格式
-
功能描述:根据员工id删除员工数据
控制层
EmpController
@DeleteMapping("/{id}") public Result delectById(@PathVariable("id") Integer id){ empService.deleteById(id); return Result.success(); }
业务层
EmpService
void deleteById(Integer id);
EmpServiceImpl
@Override public void deleteById(Integer id) { empMapper.deleteById(id); }
数据处理层
EmpMapper
@Delete("delete from emp where id = #{id}") void deleteById(Integer id);
3.部门增加
功能开发
-
请求路径:/emps
-
请求方式:POST
-
请求参数:json格式
-
响应数据:json格式
控制层
EmpController
@PostMapping public Result addEmp(@RequestBody Emp emp){ empService.addEmp(emp); return Result.success(); }
业务层
EmpService
void addEmp(Emp emp);
EmpServiceImpl
@Override public void addEmp(Emp emp) { // emp.setCreateTime(LocalDateTime.now()); emp.setUpdateTime(LocalDateTime.now()); empMapper.insertEmp(emp); }
数据处理层
EmpMapper
@Insert("insert into emp values (#{id},#{username},#{password},#{name},#{gender}," + "#{image},#{job},#{entrydate},#{deptId},#{createTime},#{updateTime})") void insertEmp(Emp emp);
4.部门修改
功能开发
-
请求路径:/emps
-
请求方式:PUT
-
请求参数:json格式
-
响应数据:json格式
控制层
EmpController
@PutMapping public Result updateEmp(@RequestBody Emp emp){ empService.updateEmp(emp); return Result.success(); }
业务层
EmpService
void updateEmp(Emp emp);
EmpServiceImpl
@Override public void updateEmp(Emp emp) { emp.setUpdateTime(LocalDateTime.now()); empMapper.updateEmp(emp); }
数据处理层
EmpMapper
void updateEmp(Emp emp);
EmpMapp.xml
<!-- 更新员工信息 --> <update id="updateDept"> update emp <set> <if test="id != null"> id=#{id}, </if> <if test="username != null"> username=#{username}, </if> <if test="password != null"> password=#{password}, </if> <if test="name != null"> name=#{name}, </if> <if test="gender != null"> gender=#{gender}, </if> <if test="image != null"> image=#{image}, </if> <if test="job != null"> job=#{job}, </if> <if test="deptId != null"> dept_id=#{deptId}, </if> <if test="updateTime != null"> update_time=#{updateTime} </if> </set> where id=#{id} </update>
完整代码
EmpController
package com.itcast.controller; import com.itcast.pojo.Emp; import com.itcast.pojo.PageBean; import com.itcast.pojo.Result; import com.itcast.service.EmpService; import lombok.extern.slf4j.Slf4j; import org.apache.ibatis.annotations.Delete; import org.apache.ibatis.annotations.Param; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.format.annotation.DateTimeFormat; import org.springframework.web.bind.annotation.*; import java.time.LocalDate; @Slf4j @RestController @RequestMapping("/emps") public class EmpController { @Autowired private EmpService empService; @GetMapping public Result findAllEmp(@RequestParam(defaultValue = "1") Integer page, @RequestParam(defaultValue = "10") Integer pageSize){ PageBean pageBean = empService.findAllEmp(page,pageSize); return Result.success(pageBean); } @GetMapping("/find") public Result findAllEmpBySome(@RequestParam(defaultValue = "1") Integer page, @RequestParam(defaultValue = "10") Integer pageSize, String name, Short gender, @DateTimeFormat(pattern = "yyyy-MM-dd")LocalDate begin, @DateTimeFormat(pattern = "yyyy-MM-dd")LocalDate end ){ log.info("分页查询,参数:{},{},{},{},{},{}", page, pageSize,name, gender, begin, end); PageBean pageBean = empService.findAllEmpBySome(page,pageSize,name,gender,begin,end); return Result.success(pageBean); } @DeleteMapping("/{id}") public Result delectById(@PathVariable("id") Integer id){ empService.deleteById(id); return Result.success(); } @PostMapping public Result addEmp(@RequestBody Emp emp){ empService.addEmp(emp); return Result.success(); } @PutMapping public Result updateEmp(@RequestBody Emp emp){ empService.updateEmp(emp); return Result.success(); } }
EmpService
package com.itcast.service; import com.itcast.pojo.Emp; import com.itcast.pojo.PageBean; import java.time.LocalDate; public interface EmpService { PageBean findAllEmp(Integer page,Integer pageSize); PageBean findAllEmpBySome(Integer page, Integer pageSize, String name, Short gender, LocalDate begin, LocalDate end); void deleteById(Integer id); void addEmp(Emp emp); void updateEmp(Emp emp); }
EmpServiceImpl
package com.itcast.service.impl; import com.github.pagehelper.Page; import com.github.pagehelper.PageHelper; import com.itcast.mapper.EmpMapper; import com.itcast.pojo.Emp; import com.itcast.pojo.PageBean; import com.itcast.service.EmpService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.web.bind.annotation.RequestParam; import java.time.LocalDate; import java.time.LocalDateTime; import java.util.List; @Service public class EmpServiceImpl implements EmpService { @Autowired private EmpMapper empMapper; @Override public PageBean findAllEmp(Integer page,Integer pageSize) { PageHelper.startPage(page,pageSize); List<Emp> list = empMapper.selectAll(); Page<Emp> pages = (Page<Emp>) list; return new PageBean((int)pages.getTotal(),pages.getResult()); } @Override public PageBean findAllEmpBySome(Integer page, Integer pageSize, String name, Short gender, LocalDate begin, LocalDate end) { PageHelper.startPage(page,pageSize); List<Emp> list = empMapper.findAllEmpBySome(page,pageSize,name,gender,begin,end); Page<Emp> pages = (Page<Emp>) list; return new PageBean((int)pages.getTotal(),pages.getResult()); } @Override public void deleteById(Integer id) { empMapper.deleteById(id); } @Override public void addEmp(Emp emp) { // emp.setCreateTime(LocalDateTime.now()); emp.setUpdateTime(LocalDateTime.now()); empMapper.insertEmp(emp); } @Override public void updateEmp(Emp emp) { emp.setUpdateTime(LocalDateTime.now()); empMapper.updateEmp(emp); } }
EmpMapper
package com.itcast.mapper; import com.itcast.pojo.Emp; import org.apache.ibatis.annotations.*; import java.time.LocalDate; import java.util.List; @Mapper public interface EmpMapper { @Select("select * from emp") public List<Emp> selectAll(); public List<Emp> findAllEmpBySome(Integer page, Integer pageSize, String name, Short gender, LocalDate begin, LocalDate end); @Delete("delete from emp where id = #{id}") void deleteById(Integer id); @Insert("insert into emp values (#{id},#{username},#{password},#{name},#{gender}," + "#{image},#{job},#{entrydate},#{deptId},#{createTime},#{updateTime})") void insertEmp(Emp emp); void updateEmp(Emp emp); }
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.itcast.mapper.EmpMapper"> <!-- 条件分页查询 --> <select id="findAllEmpBySome" resultType="com.itcast.pojo.Emp"> select * from emp <where> <if test="name != null and name != ''"> name like concat('%',#{name},'%') </if> <if test="gender != null"> and gender = #{gender} </if> <if test="begin != null and end != null"> and entrydate between #{begin} and #{end} </if> </where> order by update_time desc </select> <!-- 更新员工信息 --> <update id="updateDept"> update emp <set> <if test="id != null"> id=#{id}, </if> <if test="username != null"> username=#{username}, </if> <if test="password != null"> password=#{password}, </if> <if test="name != null"> name=#{name}, </if> <if test="gender != null"> gender=#{gender}, </if> <if test="image != null"> image=#{image}, </if> <if test="job != null"> job=#{job}, </if> <if test="deptId != null"> dept_id=#{deptId}, </if> <if test="updateTime != null"> update_time=#{updateTime} </if> </set> where id=#{id} </update> </mapper>