Mybatis深入-如何使用传递不同类型的参数(以及等量替换符号的使用)

时间:2022-11-08 08:54:53

1.在对一个数据库进行分页查询的时候,往往需要传递多个参数,比如:pagerOffset、pagerSize、查询的关键字、查询的order、查询的升降序;

如何传递这么多参数:需要组成一个Map进行传递;



2.在进行按照某个字段进行升序或者降序查询的时候,因为需要保持原样,不能因为是字符串类型的数据加上引号。需要进行等量替换,使用${ },而不能使用#{};



public void test03() {
String resource = "mybatis-config.xml";
InputStream inputStream = null;
try {
inputStream = Resources.getResourceAsStream(resource);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session = sqlSessionFactory.openSession();
try {
Map<String,Object> map = new HashMap<String, Object>();
map.put("name", "%1%"); //1代表查询的关键字,模糊查询的符号放在这里,如果放在配置文件中,将会报错
map.put("sortby", "id");
map.put("order", "ASC");
map.put("pagerOffset", 0);
map.put("pagerSize", 15);
List<User> list =session.selectList("com.milks.mapper.User.find", map);

System.out.println(list.size());
for (User user : list) {
System.out.println(user.getNickname());
}

} finally {
session.close();
}

}


注意等量替换的符号:
  <select id="find" parameterType="map" resultType="User">
select * from t_user where (nickname like #{name} or username like #{name})
order by ${sortby} ${order} limit #{pagerOffset},#{pagerSize}
</select>