日期:2014-05-16  浏览次数:20335 次

FreyjaJdbcTemplate特性三:JdbcTemplate

这个算不上什么特性。每个用过spring jdbcTemplate的估计都会写一些封装类。

?

老实说在使用过程中,吃了点亏,浪费了一些时间。

?

1、RowMapper

2、update

?

RowMapper很好很强大,Freyja里面使用了3个实现类

?

BeanPropertyRowMapper - 用来处理类似于select * from User 的结果集

MapRowMapper - 用来处理类似于 select name,age from User ?的结果集 Map<String,Object>结构返回

ObjectRowMapper - 同MapRowMapper?不过返回是以List<Object[]>结构返回如果只有一个返回值则为Object 泛型

SimpleRowMapper - 返回单个泛型(我突然发现这个好像和BeanPropertyRowMapper?雷同。)

?

jdbcTemplate的update封装很好很强大

但是如果参数有null则会报错。也就是说

update(String sql, Object... args)这个方法完全属于坑爹方法根本就不应该存在。

而应该使用

update(String sql, Object[] args, int[] argTypes)除了set args之外你需要指定类型:argType

?

重复一遍,你根本就不应该认识上面一个方法,因为你根本就不能确定args数组是否有null

?

args应该为可序列化的,取出来也是序列化对象。如果你把一个Integer[][] arr; 存入blob,那么你取得时候需要处理下,spring jdbc会按照blob格式取出来给你,当然你会获得一个byte[]然后转型之后你会获得Integer[] 这个完全错乱的数值,处理办法也好办。例如:deserialize()然后转型就行了。

?

blob字段还没有试过。

?

FreyjaJdbcTemplate特性一:HQL?

?

FreyjaJdbcTemplate特性二:cache

?

FreyjaJdbcTemplate特性三:JdbcTemplate?

?

?