一:数据库准备及 mybatis框架搭建
1:数据库准备
USE mybatis;
# 创建一个名称为dm_student的表
CREATE TABLE dm_student(
id int(32) PRIMARY KEY AUTO_INCREMENT,
name varchar(50),
major varchar(50),
sno varchar(16)
);
# 插入7条数据
INSERT INTO dm_student VALUES ('1', '张三', '数学', '10001');
INSERT INTO dm_student VALUES ('2', '李四', '英语', '10002');
INSERT INTO dm_student VALUES ('3', '王五', '计算机', '10003');
INSERT INTO dm_student VALUES ('4', '王刚', '化学', '10004');
INSERT INTO dm_student VALUES ('5', '李华', '物理', '10005');
INSERT INTO dm_student VALUES ('6', '李雷', '中文', '10006');
INSERT INTO dm_student VALUES ('7', '张飞', '英语', '10007');
2:mybatis框架搭建
二:多条件查询 <choose>(<when>、<otherwise>)
当用户输入的学生姓名不为空时,则只根据学生姓名进行学生信息的查询。
当用户输入的学生姓名为空而学生专业不为空时,则只根据学生专业进行学生信息的查询。
当用户输入的学生姓名和专业都为空,则要求查询出所有学号不为空的学生信
①:添加方法
public List<Student> findStudentByChoose(Student student);
②:customerMapper添加映射文件
<select id="findStudentByChoose" parameterType="student" resultType="student">
select * from student where
<choose>
<when test="name!=null and name!=''">
name like concat('%',#{name},'%')
</when>
<when test="name=null and profession!=null">
and profession=#{profession}
</when>
<otherwise>
and id is not null
</otherwise>
</choose>
</select>
③:测试类
@Test
public void testFindStudentByChoose(){
SqlSession session = MybatisUtil.openSession();
StudentMapper mapper = session.getMapper(StudentMapper.class);
Student student =new Student();
student.setName("九儿");
List<Student> students = mapper.findStudentByChoose(student);
System.out.println("students = "+ students);
session.close();
}
额...结果好像没出来