项目整体结构
mapper接口的作用
在博客内,发布过两个mybatis入门案例,一个是带有mapper文件,另一个是不带有mapper文件,mapper文件的存在是为了我们更好的管理和查看sql文件,mapper是sql文件的映射。
什么是多条件查询
我们来简单说一下,条件查询就是在查询的时候,根据多个条件进行查询,例如查询学生成绩的时候,我们要查找全班姓李和年龄为12的学生的成绩,那么这个条件查询分别是姓名和年龄。
我们直接来看代码,看一下条件查询如何编写。
在看条件查询之前,我们需要学会mybatis入门案例,大家可以点击查看mybatis入门案例
多条件查询分析
我们现在需要按照学生的姓和年龄进行查询我们需要怎么做(学生类在入门案例中已经编写过了,在这里我们不再重述)
- 编写mapper接口文件
- 编写sql映射文件
- 编写测试类
编写mapper接口文件,我们需要写一个方法参数是姓和年龄。
sql映射文件,我们需要编写mapper的具体实现过程
编写测试类,我们需要给出参数,进行查询验证。
现在我们开始编写代码。
mapper接口文件:
package haimeng.mapper;
import haimeng.entity.Student;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface StudentMapper {
//查询所有
List<Student> selectAll();
//根据id查询
Student selecById(int i);
// 条件查询(所讲内容)
List<Student> selectByCondition (@Param("name") String name,@Param("age") int age);
}
我们使用@Param进行多条件查询 。
编写sql映射文件:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="haimeng.mapper.StudentMapper">
<!-- 查询所有-->
<select id="selectAll" resultType="haimeng.entity.Student">
select * from student;
</select>
<!--parameterType指定参数类型(一般不写)-->
<!-- 根据id查询-->
<select id="selecById" parameterType="int" resultType="haimeng.entity.Student">
select * from student where id = #{id};
</select>
<!-- 条件查询语句-->
<select id="selectByCondition" resultType="haimeng.entity.Student">
select * from student
where
name like #{name}
and age like #{age}
</select>
</mapper>
编写测试类:
package haimeng.test;
import haimeng.entity.Student;
import haimeng.mapper.