本篇文章小编给大家分享一下mybatis通过if语句实现增删改查操作代码,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。
1 举个例子
Student类:
@Data public class Student { private Integer id; private Integer age; private Integer sno; }
有时候我们想通过age这个属性获取Student对象
有时候我们也想通过sno这个属性获取Student对象
难道我们在DAO层写两个接口?
比如这样子?
Student getStudentByAge(Int age);
Student getStudentBySno(Int sno);
那么在mapper文件中要这样写?
显然,这样子是不高效的
2 上手测试 实验
实体类 Student:
@Data public class Student { @ApiModelProperty(name = "id",example = "1",position = 1) private Integer id; @ApiModelProperty(name = "age",value = "年龄",example = "18",position = 2) private Integer age; @ApiModelProperty(name = "sno",value = "学号",example = "334",position = 3) private Integer sno; }
数据库:
CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `age` int(11) DEFAULT NULL COMMENT '年龄', `sno` int(11) NOT NULL COMMENT '学号', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
手动添加一些数据
Dao层:
@Mapper public interface StudentDao { /** * @description: 通过student中的属性 查询到student * @param: student * @author: Yuz * @creat_time: 2019/8/20 * @return: student **/ Student getStudent(Student student); /** * @description: 通过age sno 属性来删除 * @param: student * @author: Yuz * @creat_time: 2019/8/20 * @return: void **/ void deleteStudent(Student student); }
Mapper
delete from student age =#{age} sno=#{sno}
Service层:
@Service public class StudentService { @Autowired StudentDao studentDao; /** * @description: 通过student中的属性 查询到student * @param: student * @author: Yuz * @creat_time: 2019/8/20 * @return: student **/ public Student getStudent(Student student){ return studentDao.getStudent(student); } /** * @description: 通过age sno 属性来删除 * @param: student * @author: Yuz * @creat_time: 2019/8/20 * @return: void **/ public void deleteStudent(Student student){ studentDao.deleteStudent(student); } }
Controller:
@RestController @Api("学生接口") @RequestMapping("/student") public class StudentController { @Autowired StudentService studentService; /** * @description: 通过student中的属性 查询到student * @param: student * @author: Yuz * @creat_time: 2019/8/20 * @return: student **/ @ApiOperation("通过属性查询student") @PostMapping("/getStudent") Student getStudent(@RequestBody Student student){ return studentService.getStudent(student); } /** * @description: 通过age sno 属性来删除 * @param: student * @author: Yuz * @creat_time: 2019/8/20 * @return: void **/ @ApiOperation("通过属性删除student") @PostMapping("/delete") public void deleteStudent(@RequestBody Student student){ studentService.deleteStudent(student); } }
3 直接测试
通过age属性查询student:成功
通过sno属性查询:
通过属性age删除Student:
通过sno属性删除Student