1、在java代码中使用字符串拼接
映射文件中这样写:
- <select id="getBrno" parameterClass="java.lang.String" resultMap="bctlResult">
- select brno,brname from bctl where $sql$
- </select>
然后再java文件中拼写出SQL的条件语句:
- String sql= " brno like"+ b +"and pigday" = p;// b和p都是变量。
再在方法中调用传递进去:
- brList = sqlMap.queryForList("CR.getBrno", sql);
这是一种方法,很明显这种方法有一种弊端,就是sql语句需要写在java源文件中。如果需要更改查询条件,就不得不修改java文件,再重新编译。这与ibatis的本意有些违背。(这个容易被注入,不好吧^-^)
2,直接在映射文件中配置参数
映射文件这样写:
- <!-- 多条件查询-->
- <parameterMap id="myParam" class="java.util.HashMap">
- <parameter property="id"/>
- <parameter property="name"/>
- </parameterMap>
- <select id="multConQuery" parameterMap="myParam" resultClass="Department">
- select * from department where id = ? and name = ?
- </select>
java文件中这样调用:
- public Department queryDepartmentByIdAndName(int id,String name)
- {
- Department dept = new Department();
- try
- {
- sqlMapClient.startTransaction();
- HashMap hmParam = new HashMap();
- hmParam.put("id",id);
- hmParam.put("name",name);
- sqlMapClient.queryForObject("multConQuery",hmParam,dept);
- sqlMapClient.commitTransaction();
- }
- catch(Exception e)
- {
- e.printStackTrace();
- }
- return dept;
- }