这种方式用得比较多,可以用于封装框架
1. 编写接口多参数方法
/**
* 多参数查询,注意要和Employeer.xml的方法名对应
*/
public List<Employeer> findEmployeerByNameandDep1(Map<String,String> map);
2. 编写resultMap
<!-- 定义数据库字段与实体对象的映射关系 -->
<resultMap type="Employeer" id="resultMap">
<id property="employeer_id" column="employeer_id"/>
<result property="employeer_name" column="employeer_name"/>
<result property="employeer_age" column="employeer_age"/>
<result property="employeer_department" column="employeer_department"/>
<result property="employeer_worktype" column="employeer_worktype"/>
</resultMap>
3. 编写sql语句
<!--多参数 查找 返回list 的select 语句,注意 resultMap 的值是指向前面定义好的,注意key1和key2为传入的map的键值 -->
<select id="findEmployeerByNameandDep1" parameterType="map" resultType="Employeer">
select* from `t_employeer` where employeer_name=#{key1} and employeer_department=#{key2}
</select>
由于是多参数那么就不能使用parameterType, 改用#{index}是第几个就用第几个的索引,索引从0开始
4. 编写查询方法
/**
* 多参数查询列表,使用map
*/
public static List<Employeer> getEmployeerList(Map<String, String> map){
SqlSession session = null;
List<Employeer> employeers=null;
try {
session = sqlSessionFactory.openSession();
EmployeerMapper employeerMapper=session.getMapper(EmployeerMapper.class);
employeers = employeerMapper.findEmployeerByNameandDep1(map);
session.commit() ;
} finally {
session.close();
}
return employeers;
}
5. 编写测试类
System.out.println("=========================使用多单参数map方式查询===========================");
Map<String, String> map = new HashMap<String, String>();
map.put("key1", "明明");
map.put("key2", "财会部");
List<Employeer> employeers2=getEmployeerList(map);
for(Employeer employeer2:employeers2){
System.out.println(employeer2);
}