首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

Ibatis的不理解解决方法

2012-03-14 
Ibatis的不理解Java code首先我要做的就是查出一个集合,添加到另外一个表里,之前是没用到RKRQ,是可以添加

Ibatis的不理解

Java code
首先我要做的就是查出一个集合,添加到另外一个表里,之前是没用到RKRQ,是可以添加的,后来加了一个RKRQ,就怎么也不能加,一直报错,说好像是找不到属性?详情:查出集合的数据,里面是Map,Map里有一个字段是RKRQ 就是入库日期,之前用批处理出错了,又改成现在这个样子,还是一样的错误

Java code
    public int batchAddGrQyGlb(List<Map> gxList){//        doBatch(gxList, "Grxy.batchAddGrQyGlb");        for(int i = 0; i < gxList.size(); i++){            Map map = gxList.get(i);            sqlMapClient.insert("Grxy.batchAddGrQyGlb", map);        }        return 1;    }

批处理的代码是这样的
Java code
    @SuppressWarnings("unchecked")    public void doBatch(final List<Map> replyList, final String ibatisId){        // 执行回调        sqlMapClient.execute(new SqlMapClientCallback(){            // 实现回调接口            public Object doInSqlMapClient(SqlMapExecutor executor){                // 开始批处理                try{                    executor.startBatch();                    for(Map map : replyList){                        // 插入操作                        sqlMapClient.insert(ibatisId, map);                    }                    executor.executeBatch();                }catch(SQLException e){                    e.printStackTrace();                }                return null;            }        });    }

Ibatis查询代码是:
XML code
    <select id="getGxRecords" parameterClass="java.util.HashMap" resultClass="java.util.HashMap">        select fr.SFZJMC, fr.SFZJHM, isNull(dj.FDDBR, fr.XM) XM, dj.NBXH, bg.RKRQ YXQX, dj.RKRQ LASTRKSJ        from db_zxxt.ZX_GS_QYDJ dj left join db_zxxt.ZX_GS_FDDBR fr on dj.NBXH = fr.NBXH            left join db_zxxt.ZX_GS_BGNR bg on fr.NBXH = bg.NBXH        where dj.RKRQ >= #lastRksj#        order by dj.RKRQ asc    </select>

Ibatis添加代码是:
XML code
    <insert id="batchAddGrQyGlb" parameterClass="java.util.HashMap">        insert into db_grxy.QYXG_GRQYGLB (SFZJMC, SFZJHM, XM, XYDJ, NBXH, GRLB, YXQX, LASTRKSJ)        values ( #SFZJMC:VARCHAR#, #SFZJHM:VARCHAR#, #XM:VARCHAR#, #XYDJ:VARCHAR#, #NBXH#, 'fr', #YXQX:DATE#, #LASTRKSJ:DATE# )    </insert>

请高手帮我解决一下,下面是错误信息。

[解决办法]
你查一下什么原因造成了空指针异常
[解决办法]
dj.RKRQ >= #lastRksj#
请确保的map里的LASTRKSJ的格式与值是否为空
如果为日期格式改为dj.RKRQ >= to_char(#lastRksj#,'yyyy-MM-dd hh24:mi:ss')试试

[解决办法]
我换种方式就可以,本来想用map里的LASTRKSJ给数据库的LASTRKSJ赋值,结果不行。不理解就是这里.
后来我新加一个更新方法,用parameterClass="string",从map里取到LASTRKSJ传进去就能执行更新就可以.
这什么道理?


我想看你的 resultMap 把resultMap贴出来把。。
还有上面的代码,没有什么不好理解的。。你如果用map,则你的map中一定要有LASTRKSJ这个属性。并且是区分大小写的。但是你改成parameterClass="string"的时候是不用区分的,名字好像也不用一样(我记得好像是这样。只要你传过一个String 过来就行,楼主可以试试,待考证)
我猜你空指针应该就是这个原因。。传进来的属性名字不匹配。。。
[解决办法]
ibaties 分页 很简单
sqlMap.queryForList("querySPPL-SPPL", form, (currPage - 1) * pageSize, pageSize);
(currPage - 1) * pageSize 起始
 pageSize 每页多少

对应的语句
 <select id="querySPPL-SPPL" parameterClass="sppl" resultMap="result_querySPPL-SPPL">


select A.CODE,A.NAME,A.GZ COUNTER,B.NAME COUNTERNAME,A.YXBJ
from W_SPPL A,W_GZ B
WHERE A.GZ=B.CODE
<dynamic prepend=" AND ">
<isNotEmpty prepend=" AND " property="code">
A.CODE=#code#
</isNotEmpty>
<isNotEmpty prepend=" AND " property="name">
A.NAME like '%'||#name#||'%'
</isNotEmpty>
<isNotEmpty prepend=" AND " property="counter">
A.GZ=#counter#
</isNotEmpty>
</dynamic>
order by A.CODE
</select>

只要给参数就可以了
ibaties自己封装的 自己执行

热点排行