使用Ibatis一路中遇到的问题


工具: Ibatis, mysql,  Intellij Idea


写配置文件需要注意的几点:

1.为每个操作数据库的model使用一个别名,如下,用parameterClass传参时可以之间使用别名,缩减代码量

<typeAlias alias="mall" type="com.guangjieba.shale.master.model.Mall"/>


2.模糊查询like关键字的使用:'%$value$%'   ,(限mysql)

<isNotNull property="description" prepend="and">
                    description like '%$description$%'
                </isNotNull>

3.大于和小于号的使用: > 对应  &gt;      <  对应 &lt; 因为xml文件中不支持直接使用>,<号



4.返回类型中,如果数据库中定义的属性是这样brand_id,而实体类中属性是这样的brandId,是没法自动赋值的

此时要配置一下对应的parameterMap或者resultMap了,如下:

 <!--配置表和实体Bean之间的映射关系-->
    <resultMap id="mallMap" class="com.guangjieba.shale.master.model.Mall">
        <result property="id" column="id" nullValue="0"/>
        <result property="name" column="name"/>
        <result property="mallId" column="mall_id"/>
        <result property="photo" column="photo"/>
        <result property="width" column="width"/>
        <result property="height" column="height"/>
        <result property="description" column="description"/>
        <result property="cityId" column="city_id"/>
    </resultMap>

然后:

<!--查-->
    <select id="findMall" parameterClass="mallIbat" resultMap="mallMap">
        select * from mall
        <include refid="sql_mallQuery"/>
        <include refid="sql_page"/>
    </select>
resultMap中使用对应定义的mallMap。

5.isNotNull与isNotEmpty的区别

isNotNull用来判断参数是否为Null,不为Null时为true;

isNotEmpty判断是否为Null或空,比isNotNull多判断了一个空的问题,使用时还是用isNotEmpty更好一点

例子可以看这里:ibatis 中isNull, isNotNull与isEmpty, isNotEmpty区别


遇到的异常:

一。java.lang.RuntimeException: Error comparing in conditional fragment.  Uknown 'compare to' values.

检查配置的查询语句,如果使用isGreaterThan等比较大小的话,如果忘记配置compareValue属性就会出现如上错误:



二.java.lang.NullPointerException;很常见的一个异常,以为是代码中哪里忘记初始化了,找了好久发现都没有问题,最后发现原来是配置文件中漏了resultClass的配置,如图,加上返回值就可以了,这个异常报的有点偏了感觉。


还有一些忘记记了,不过异常提示信息很明显的,跟着异常看看,基本上改下配置文件就ok。


三.--- The error happened while setting a property on the result object.  
--- Cause: java.lang.RuntimeException: Error setting property 'setShopType' of 'Shop{id=1, name='银泰同门店', address='西湖区西园8路2号'

出错原因:使用ibatis读取数据时,数据库中定义的shop_type是int类型,但值为null;如下,因此转换为java类型是报错.


解决方法:

首先出错位置是在resultMap中的,添加nullValue="0",即可



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值