话不多说直接写记录。。。
1、查询表序列号并插入到数据库当中
ibatis
<insert id="insertDept" parameterType="java.util.Map">
<selectKey resultType="int" keyProperty="id" >
select seq_tree.nextval from dual
</selectKey>
insert into
ts_tree(node)
values(#{id}) </insert>
myibatis
<insert id="insertDept" parameterType="java.util.Map">
<selectKey resultType="int" keyProperty="id" order="BEFORE">
select seq_tree.nextval from dual
</selectKey>
insert into
ts_tree(node)
values(#{id}) </insert>
myibatis 在selectKey要加order这个属性
2、sqlmap有调用函数和过程的话呢,mybatis与ibatis写法是不同的
mybatis
<select id="selectSingole" resultType="string"
parameterType="java.util.Map">
<![CDATA[
select f_sys(${value}) value from dual
]]>
</select>
这个value在java上封装后再传到mybatis
public String findSingleColToString(Map<String,Object> map) {
return (String) sqlSessionTemplate.selectOne("namespace名.selectSingole"," 'select t.dept_node from ts_dept t where t.state = ''A'' and t.dept_role in (4,5,8)' ");
}
3、很多人会使用sql查询语句上用in,但很多人会发现ibatis是非常简单实现,而mybatis有方法但比较麻烦实现的
很多人会说直接用foreach这个方法可以解决。解决是可以,但是比较麻烦呀
我没用这个方法,我选择是直接在java上进行封装in的sql语句然后再传到sqlmap里面
public String getDefaultDeptID(Map<String,Object> param) {
String sql = "'select t.node from ts_dept t b.node in ("+ param.get("deptIds") +") '";
String defaultDeptIds = (String) sqlSessionTemplate.selectOne("namespace名.defaultDeptIds", sql);
return defaultDeptIds;
}
sqlmap
<select id="defaultDeptIds" resultType="java.lang.String" parameterType="java.lang.String" >
${value}
</select>
先记录一下,以后方便查看