Spring-RowMapper

  1. •RowMapper可以将数据中的每一行封装成用户定义的类,在数据库查询中,如果返回的类型是用户自定义的类型则需要包装,如果是Java自定义的类型,如:String则不需要,Spring最新的类SimpleJdbcTemplate使用更加简单了。    
  2. •下面这个实例说明了如何使用RowMapp,从网上下载的代码,还行能说明问题。在使用过程中我们可以将内部类做成POJO的外部类,只要实现RowMapper接口即可。如果用户想让ApplicationContext进行定义还是要谨慎。毕竟实现RowMapper接口需要给一个类增加一个mapRow方法,让类承受的功能较多,不利于分析系统    
  3. •实现一、在内部建立内联类实现RowMapper接口    
  4. •    
  5. package hysteria.contact.dao.impl;    
  6. •    
  7. import java.sql.ResultSet;    
  8. import java.sql.SQLException;    
  9. import java.sql.Types;    
  10. import java.util.List;    
  11. •    
  12. import org.springframework.jdbc.core.JdbcTemplate;    
  13. import org.springframework.jdbc.core.RowMapper;    
  14. •    
  15. import hysteria.contact.dao.ItemDAO;    
  16. import hysteria.contact.domain.Item;    
  17. •    
  18. public class ItemDAOImpl implements ItemDAO {    
  19. •    private JdbcTemplate jdbcTemplate;    
  20. •    
  21. •    public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {    
  22. •        this.jdbcTemplate = jdbcTemplate;    
  23. •    }    
  24. •    
  25. •    public Item insert(Item item) {    
  26. •        String sql = "INSERT INTO items(user_id,name,phone,email) VALUES(?,?,?,?)";    
  27. •        Object[] params = new Object[] { item.getUserId(), item.getName(),    
  28. •                item.getPhone(), item.getEmail() };    
  29. •        int[] types = new int[] { Types.INTEGER, Types.VARCHAR, Types.CHAR,    
  30. •                Types.VARCHAR };    
  31. •        jdbcTemplate.update(sql, params, types);    
  32. •        return item;    
  33. •    }    
  34. •    
  35. •    public Item update(Item item) {    
  36. •        String sql = "UPDATE items SET name = ?, phone = ?, email = ? WHERE id = ?";    
  37. •        Object[] params = new Object[] { item.getName(), item.getPhone(),    
  38. •                item.getEmail(), item.getId() };    
  39. •        int[] types = new int[] { Types.VARCHAR, Types.CHAR, Types.VARCHAR,    
  40. •                Types.VARCHAR, Types.INTEGER };    
  41. •        jdbcTemplate.update(sql, params, types);    
  42. •    
  43. •        return item;    
  44. •    }    
  45. •    
  46. •    public void delete(Item item) {    
  47. •        String sql = "DELETE FROM items WHERE id = ?";    
  48. •        Object[] params = new Object[] { item.getId() };    
  49. •        int[] types = new int[] { Types.INTEGER };    
  50. •        jdbcTemplate.update(sql, params, types);    
  51. •    }    
  52. •    
  53. •    public Item findById(int id) {    
  54. •        String sql = "SELECT * FROM items WHERE id = ?";    
  55. •        Object[] params = new Object[] { id };    
  56. •        int[] types = new int[] { Types.INTEGER };    
  57. •        List items = jdbcTemplate.query(sql, params, types, new ItemMapper());    
  58. •        if (items.isEmpty()) {    
  59. •            return null;    
  60. •        }    
  61. •        return (Item) items.get(0);    
  62. •    }    
  63. •    
  64. •    public List<Item> findAll() {    
  65. •        String sql = "SELECT * FROM items";    
  66. •        return jdbcTemplate.query(sql, new ItemMapper());    
  67. •    }    
  68. •    
  69. •    public List<Item> findAllByUser(int user_id) {    
  70. •        String sql = "SELECT * FROM items WHERE user_id = ?";    
  71. •        Object[] params = new Object[] { user_id };    
  72. •        int[] types = new int[] { Types.INTEGER };    
  73. •        List items = jdbcTemplate.query(sql, params, types, new ItemMapper());    
  74. •        return items;    
  75. •    }    
  76. •    
  77. •    protected class ItemMapper implements RowMapper {    
  78. •    
  79. •        public Object mapRow(ResultSet rs, int rowNum) throws SQLException {    
  80. •            Item item = new Item();    
  81. •            item.setId(rs.getInt("id"));    
  82. •            item.setUserId(rs.getInt("user_id"));    
  83. •            item.setName(rs.getString("name"));    
  84. •            item.setPhone(rs.getString("phone"));    
  85. •            item.setEmail(rs.getString("email"));    
  86. •    
  87. •            return item;    
  88. •        }    
  89. •    
  90. •    }    
  91. •    
  92. •}    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring-jdbc是Spring框架提供的一种数据库访问方式,它基于JDBC API实现,但在使用上比JDBC更加简洁和易用。下面是Spring-jdbc的使用方法: 1. 配置数据源:在Spring的配置文件中配置一个数据源,可以使用Spring-jdbc内置的数据源或者自己实现数据源。 2. 编写DAO类:使用Spring-jdbc访问数据库需要编写DAO类。DAO类需要继承Spring提供的JdbcDaoSupport类,这样就能够获得一个JdbcTemplate对象,用于执行SQL语句。 3. 编写SQL语句:在DAO类中编写SQL语句,可以使用JdbcTemplate对象提供的方法执行SQL语句。 4. 对SQL语句的结果进行处理:对于查询语句,JdbcTemplate提供了可以返回结果集的方法,可用于遍历结果集、映射结果集到Java对象、统计结果集等操作。 下面是一个简单的使用Spring-jdbc访问MySQL数据库的示例: 首先在Spring的配置文件中配置MySQL数据源: ``` <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/test"/> <property name="username" value="root"/> <property name="password" value="123456"/> </bean> ``` 然后编写DAO类,此示例中使用JdbcTemplate对象执行SQL语句并返回结果: ``` public class UserDao extends JdbcDaoSupport { public User getUserById(int id) { String sql = "SELECT id,name,age FROM user WHERE id=?"; return getJdbcTemplate().queryForObject(sql, new Object[]{id}, new RowMapper<User>() { @Override public User mapRow(ResultSet rs, int rowNum) throws SQLException { User user = new User(); user.setId(rs.getInt("id")); user.setName(rs.getString("name")); user.setAge(rs.getInt("age")); return user; } }); } } ``` 最后在需要使用数据库的地方调用DAO类中的方法即可完成数据库操作。 ``` UserDao userDao = new UserDao(); User user = userDao.getUserById(1); System.out.println(user.getName()); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值