关于Spring的RowMapper
2015-10-26 12:05
661 查看
之前学习Spring的时候 连接数据库总是结合hibernate 用hibernate连接数据库 然后也通过hibernate建立实体类与数据库映射关系
如果单单用Spring的时候 从网上找了N久 发现RowMapper是可以的
这样的话增删改还好 直接执行sql就可以
但是查询的时候就特别麻烦
先写一个例子
public UserInfo sum(String demo1, String demo2) {
UserInfo res = null;
List<UserInfo> list = new ArrayList<UserInfo>();
try {
sql = "select * from USERINFO t where t.USER_NAME = ?" ;
list = jdbcTemplate.query(sql, new RowMapper<UserInfo>(){
public UserInfo mapRow(ResultSet rs, int rowNum) throws SQLException {
UserInfo user = new UserInfo();
user.setUserId(rs.getInt("user_Id"));
user.setUserName(rs.getString("user_Name"));
user.setUserPassword(rs.getString("user_Password"));
return user;
}
});
System.out.println(list.get(0).getUserId()+"+"+list.get(0).getUserName()+"+"+list.get(0).getUserPassword());
res = list.get(0);
}
catch (Exception e) {
tm.rollback(trans);//回滚事件
e.printStackTrace();
}
tm.commit(trans); //提交事务
return res;
}
其中UserInfo类里的字段是
public int userId;
public String userName;
public String userPassword;
这三个字段 还有与其对应的GET、SET方法
从上面一段代码中我们能知道如果用到RowMapper的时候 我们需要知道数据库 并写入到代码中 具体为什么这么写 这里就不说明了 网上一查一大堆
但是如果我们运用这个表需要很多次 各种查询 那我们岂不是每次都需要这么写 这么写就会感觉特别不爽 每次都得自己去写数据库的字段 与实体类的字段对应
于是上网去查 发现网上很多都是说 用注解直接就可以办到 但是我用了 没成功 可能是没找到Jar包 反正不管怎么说 就是注解没用上 这下就愁人了
没有注解 又不想用RowMapper自己手动的填映射
找来找去无意中发现了一个类
感觉还是很不错的
BeanPropertyRowMapper类
其实原理还是RowMapper类 只不过就是不需要咱们自己填写映射就可以了 但是 运用的方法需要适当改一下
请参照上面的代码 做一下对比
public UserInfo sum(String demo1, String demo2) {
UserInfo res = null;
List<UserInfo> list = new ArrayList<UserInfo>();
try {
sql = "select * from USERINFO t where t.USER_NAME = ?" ;
list = (List<UserInfo>)jdbcTemplate.query(sql,
new Object[]{"1"},new BeanPropertyRowMapper(UserInfo.class));
System.out.println(list.get(0).getUserId()+"+"+list.get(0).getUserName()+"+"+list.get(0).getUserPassword());
res = list.get(0);
}
catch (Exception e) {
tm.rollback(trans);//回滚事件
e.printStackTrace();
}
tm.commit(trans); //提交事务
return res;
}
很说明问题了 这个不需要手动写映射而是Spring自动写映射 所以这个方法相对容易很多
需要注意的是:BeanPropertyRowMapper是根据字段名和实体类中的标准Setter方法进行映射滴。也就是说,我们需要使表中的字段名和实体类的成员变量名称一致。 需要加载Spring2.5以上版本支持
如果单单用Spring的时候 从网上找了N久 发现RowMapper是可以的
这样的话增删改还好 直接执行sql就可以
但是查询的时候就特别麻烦
先写一个例子
public UserInfo sum(String demo1, String demo2) {
UserInfo res = null;
List<UserInfo> list = new ArrayList<UserInfo>();
try {
sql = "select * from USERINFO t where t.USER_NAME = ?" ;
list = jdbcTemplate.query(sql, new RowMapper<UserInfo>(){
public UserInfo mapRow(ResultSet rs, int rowNum) throws SQLException {
UserInfo user = new UserInfo();
user.setUserId(rs.getInt("user_Id"));
user.setUserName(rs.getString("user_Name"));
user.setUserPassword(rs.getString("user_Password"));
return user;
}
});
System.out.println(list.get(0).getUserId()+"+"+list.get(0).getUserName()+"+"+list.get(0).getUserPassword());
res = list.get(0);
}
catch (Exception e) {
tm.rollback(trans);//回滚事件
e.printStackTrace();
}
tm.commit(trans); //提交事务
return res;
}
其中UserInfo类里的字段是
public int userId;
public String userName;
public String userPassword;
这三个字段 还有与其对应的GET、SET方法
从上面一段代码中我们能知道如果用到RowMapper的时候 我们需要知道数据库 并写入到代码中 具体为什么这么写 这里就不说明了 网上一查一大堆
但是如果我们运用这个表需要很多次 各种查询 那我们岂不是每次都需要这么写 这么写就会感觉特别不爽 每次都得自己去写数据库的字段 与实体类的字段对应
于是上网去查 发现网上很多都是说 用注解直接就可以办到 但是我用了 没成功 可能是没找到Jar包 反正不管怎么说 就是注解没用上 这下就愁人了
没有注解 又不想用RowMapper自己手动的填映射
找来找去无意中发现了一个类
感觉还是很不错的
BeanPropertyRowMapper类
其实原理还是RowMapper类 只不过就是不需要咱们自己填写映射就可以了 但是 运用的方法需要适当改一下
请参照上面的代码 做一下对比
public UserInfo sum(String demo1, String demo2) {
UserInfo res = null;
List<UserInfo> list = new ArrayList<UserInfo>();
try {
sql = "select * from USERINFO t where t.USER_NAME = ?" ;
list = (List<UserInfo>)jdbcTemplate.query(sql,
new Object[]{"1"},new BeanPropertyRowMapper(UserInfo.class));
System.out.println(list.get(0).getUserId()+"+"+list.get(0).getUserName()+"+"+list.get(0).getUserPassword());
res = list.get(0);
}
catch (Exception e) {
tm.rollback(trans);//回滚事件
e.printStackTrace();
}
tm.commit(trans); //提交事务
return res;
}
很说明问题了 这个不需要手动写映射而是Spring自动写映射 所以这个方法相对容易很多
需要注意的是:BeanPropertyRowMapper是根据字段名和实体类中的标准Setter方法进行映射滴。也就是说,我们需要使表中的字段名和实体类的成员变量名称一致。 需要加载Spring2.5以上版本支持
相关文章推荐
- 一个jar包里的网站
- 一个jar包里的网站之文件上传
- 一个jar包里的网站之返回对媒体类型
- 模拟Spring的简单实现
- spring+html5实现安全传输随机数字密码键盘
- Spring中属性注入详解
- struts2 spring整合fieldError问题
- spring的jdbctemplate的crud的基类dao
- 读取spring配置文件的方法(spring读取资源文件)
- Spring Bean基本管理实例详解
- java实现简单美女拼图游戏
- java基本教程之线程休眠 java多线程教程
- JSP开发中在spring mvc项目中实现登录账号单浏览器登录
- spring boot实战之内嵌容器tomcat配置
- 基于Spring框架的Shiro配置方法
- Spring MVC中上传文件实例
- spring aop两种配置方式
- 实例讲解Java的Spring框架中的AOP实现
- 解析Java中如何获取Spring中配置的bean
- Spring的注解配置与XML配置之间的比较