ktanx-jdbc 1.0.5发布,增加自定义sql解析及部分方法修改

分类: 开源软件 0人评论 selfly 13天前发布

版本 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修复

上一篇:
没有了
下一篇:
0 条评论