springjdbc

来源:互联网 发布:福建网络服务公司 编辑:程序博客网 时间:2024/05/20 15:37

RowMapper可以将数据中的每一行数据封装成用户定义的类.

RowMapper<User> rm=ParameterizedBeanPropertyRowMapper.newInstance(User.class);

//RowMapper把resultset结果放在javabean里

Spring为KeyHolder接口指代了一个通用的实现类GeneratedKeyHolder,该类返回新增记录时的自增长主键值
//GeneratedKeyHolder,该类返回新增记录时的自增长主键值
GeneratedKeyHolder kh = new GeneratedKeyHolder();

BeanPropertySqlParameterSource的父类实现了SqlParameterSource接口
//:birthday--->命名参数
//BeanPropertySqlParameterSource使用javabean或者Map来实现对命名参数传递,可以批量更新
//Collection collection = null;
//SqlParameterSource[] createBatch = SqlParameterSourceUtils.createBatch(collection.toArray());
//SB.append("update user set nickName = :nickName, update_time = :updateTime,").append(" update_userName = :updateUserName where userId = :userId");


//?:代表占位符
//传Object[]{}或者多个参数,一定要注意占位符的顺序要和参数顺序一致


applicationContext.xml中进行配置,beans标签中填写

<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">

<property name="dataSource">

<ref local="dataSource" />

</property>

</bean>


 // 查询用的sql句
public List queryForList(sql,执行的sql语句
Object[] args,      // sql句中的参数
int[] argTypes,     // sql句中的参数的数据类型(java类型)
Class elementType)  // list装载结果的元数据类型


//获取单个用户,传入sql和javabean映射RowMapper
User user = operations.getJdbcOperations().queryForObject(sql, rm);


//获取多个用户,传入sql和javabean映射RowMapper
List<User> query = operations.getJdbcOperations().query(sql, rm);


String strTest = "?=abc?中%1&2<3,4>";
  strTest = URLEncoder.encode(strTest, "UTF-8");
  System.out.println("转码"+strTest);
  strTest = URLDecoder.decode(strTest,"UTF-8");
  System.out.println("s解码"+strTest);
执行结果:
%3F%3Dabc%3F%E4%B8%AD%251%262%3C3%2C4%3E
?=abc?中%1&2<3,4>


ModelMap的定义类:
public class ModelMap extends LinkedHashMap<String, Object>
ModelMap是继承自LinkedHashMap的,而LinkedHashMap继承自HashMap,HashMap实现了Map接口,实现其put()方法,因此ModelMap中的put()方法是继承自 HashMap的;
ModelMap对象的 addAttribute,put两个方法区别是: addAttribute是不允许添加空值的key,put是允许的