这个算不上什么特性。每个用过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