关于Spring的RowMapper

之前学习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以上版本支持




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值