使用Ibatis一路中遇到的问题


工具: Ibatis, mysql,  Intellij Idea


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

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


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


                    description like '%$description$%'
                

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

使用Ibatis一路中遇到的问题_第1张图片


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

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

 
    
        
        
        
        
        
        
        
        
    

然后:


    
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属性就会出现如上错误:

使用Ibatis一路中遇到的问题_第2张图片


二.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类型是报错.

使用Ibatis一路中遇到的问题_第3张图片

解决方法:

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


使用Ibatis一路中遇到的问题_第4张图片

你可能感兴趣的:(java的一些类,ibatis,数据库,mysql,crud)