版本 1.0.5
更新内容:
- 增加自定义sql解析转换,使用native方式执行自定义sql时可以在sql中使用类名和类属性了。
- resultClass方法增强,支持JavaBean外的基本类型,例如String、Long等
- select 增加firstResult (objRirstResult、oneColFirstResult)方法, 与singleResult方法区别在于:firstResult方法后台sql会进行分页处理只取第一条,singleResult方法sql不处理当实际数据多于1条时会抛出异常,没有数据时都会返回null
- pageList加强 方法支持查询页列表数据时不进行count查询
- objectXXX 系列方法重命名为objXXX 例如objectList改为objList
- singleColumnXXX 系列方法重命名为oneColXXX 例如singleColumnPageList改为oneColPageList
- 增加native方式insert方法
- 增加oracle常用功能测试及部分兼容性bug修复
自定义sql解析
使用native方式执行自定义sql时,现在可以在sql中直接使用类名和类属性了,这使得使用api方法或自定义sql时书写方式保持一致。
例如:
jdbcDao.createNativeExecutor()
.command("update UserInfo set userAge = 18 where userAge < 18")
.execute();
在执行时会自动将sql翻译成:
update user_info set user_age = 18 where user_age < 18
此方法支持绝大部分sql。那有时候确实想执行百分百原生的sql怎么办?只需加上forceNative
参数即可:
jdbcDao.createNativeExecutor()
.command("update user_info set user_age = 18 where user_age < 18")
.forceNative(true)
.execute();
这样就不做任何转换直接执行了。
自定义sql转换如果使用class的短类名,需要在JdbcEngineConfig中配置实体类所在的包名,多个用英文逗号分隔:
<bean id="jdbcTemplateEngineConfigImpl" class="com.ktanx.jdbc.springjdbc.config.JdbcTemplateEngineConfigImpl">
<property name="modelPackages" value="com.ktanx.jdbc.test.model"/>
</bean>
如果不配置则在写sql时需要写全类名,例如上面的sql要写成:
update `com.ktanx.jdbc.test.model.UserInfo` set userAge = 18 where userAge < 18
全类名用`号包围。
PS:目前实现了大部分的sql转换,但是对于一些不常用的sql如 insert into select 等没有实现,此时可以使用forceNative执行。
resultClass方法增强
resultClass方法原先只支持到JavaBean的转换,现在支持JavaBean外的基本类型,例如String、Long等。
需要注意如果数据库使用oracle
,又使用了分页,则不能使用基本类型。
例如:
oneColPageList(String.class,1,1);
上面代码在使用oracle数据库下会报错,这是因为oracle数据库分页通过rownum实现,返回的数据中会有额外的rownum字段,导致转换报错。
增加firstResult方法
select 增加firstResult (objRirstResult、oneColFirstResult)方法,
与singleResult方法区别在于:firstResult方法后台sql会进行分页处理只取第一条,singleResult方法sql不处理当实际数据多于1条时会抛出异常,没有数据时都会返回null
pageList加强
pageList方法现在支持只查询页列表数据而不进行count查询了。通过设置最后一个参数isCount
为false即可。
objectXXX方法重命名
有些方法名看起来有点过长了,所以objectXXX 系列方法重命名为objXXX 例如objectList改为objList
singleColumnXXX方法重命名
同上,感觉方法名太长了,所以singleColumnXXX,系列方法重命名为oneColXXX,例如singleColumnPageList改为oneColPageList。
增加native方式insert方法
最近在做的功能要执行原生sql,发现native方式的insert方法还是有需要的,所以加上。
增加oracle测试
增加oracle常用功能测试及部分兼容性bug修复
good