mybatis中的增删改查怎么利用if语句来实现
创始人
2024-11-21 00:21:44
0次

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文件中要这样写?

 
 select * from student where age=#{age}
 
 
 select * from student where sno=#{sno}
 

显然,这样子是不高效的

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;

手动添加一些数据

mybatis中的增删改查怎么利用if语句来实现

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




 
 
 
 
 

 
 select * from student where
 age=#{age}
 sno=#{sno}
 

 
 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:成功

mybatis中的增删改查怎么利用if语句来实现

通过sno属性查询:

mybatis中的增删改查怎么利用if语句来实现

通过属性age删除Student:

mybatis中的增删改查怎么利用if语句来实现

mybatis中的增删改查怎么利用if语句来实现

通过sno属性删除Student

mybatis中的增删改查怎么利用if语句来实现

mybatis中的增删改查怎么利用if语句来实现

补充知识:mybatis使用if条件判断,数字类型不能写 0 !=‘',否则会进不到条件拼接里面

1.对于 if条件判断:数字类型属性判断的时候

注意不可以是这种情况


 and del_flag = #{delFlag}

参数一个是0,一个是"",最终debug会走进case 8 里面,0和“”都会被转成double进行比较,都会变成0.0,这就是mybati中if test 0!=""判定为false的原因

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...