ibatis 里出现错误 “could not find sql statement to include with refid xxx”

 java, mybatis  ibatis 里出现错误 “could not find sql statement to include with refid xxx”已关闭评论
4月 112022
 

ibatis 测试时出现错误提示:  “could not find sql statement to include with refid xxx” , 出现这种错误一般是下面两种情况引起:

  1. refid引用的sqlid不正确, 自己好好检查下。
  2. refid正确,但还是报错, 可能原因是: sql refid定义的位置必须在引用的语句之前,否则会出错。

 

DONE!

mybatis 懒加载无效问题(lazy invalid)

 mybatis  mybatis 懒加载无效问题(lazy invalid)已关闭评论
4月 122021
 

使用mybatis,mybatis-config配置文件已使用下面两行配置

<settings>
    <setting name="aggressiveLazyLoading" value="false" />
    <setting name="lazyLoadingEnabled" value="true" /> 
</settings>
但发现还是懒加载无效,其实可能在你的代码里有tostring,equal等默认方法触发了懒加载调用,可以通过添加一个配置项解决问题,使用下面的配置
<settings>
<setting name="aggressiveLazyLoading" value="false" />
<setting name="lazyLoadingEnabled" value="true" /> 
<setting name="lazyLoadTriggerMethods" value=""/>
</settings>

说明:
lazyLoadTriggerMethods : Specifies which Object's methods trigger a lazy load, 
指定触发懒加载的方法名,用逗号分隔, 默认值:equals,clone,hashCode,toString

 

mybatis中#和$的区别

 mybatis, 开发  mybatis中#和$的区别已关闭评论
4月 232020
 

mybatis写sql语句时会看到#{}, ${}的写法,有什么区别呢?

1. #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。

2. $将传入的数据直接显示生成在sql中。如:select * from ${table};

3. #方式能够很大程度防止sql注入。

4.$方式无法防止Sql注入。

5.$方式一般用于传入数据库对象,例如传入表名,order by、like 语句只能用${}了,用#{}会多个’ ‘导致sql语句失效

6.一般能用#的就别用$.