`

RowMapper 将查出的一行记录封装到用户定义的类中

SQL 
阅读更多

RowMapper可以将数据中的每一行封装成用户定义的类,在数据库查询中,如果返回的类型是用户自定义的类型则需要包装。

public class ItemDAOImpl implements ItemDAO {

 

 private JdbcTemplate jdbcTemplate;  
  
 public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {  
  this.jdbcTemplate = jdbcTemplate;  
 }  
//插入一条记录

 public Item insert(Item item) {  
  String sql = "INSERT INTO items(user_id,name,phone,email) VALUES(?,?,?,?)";  
  Object[] params = new Object[]{item.getUserId(),item.getName(),item.getPhone(),item.getEmail()};  
  int[] types = new int[]{Types.INTEGER,Types.VARCHAR,Types.CHAR,Types.VARCHAR};  
  jdbcTemplate.update(sql,params,types);  
  return item;  
 }  

public Item findById(int id) {  
  String sql = "SELECT * FROM items WHERE id = ?";  
  Object[] params = new Object[] {id};  
  int[] types = new int[] {Types.INTEGER};  
  List items = jdbcTemplate.query(sql,params,types,new ItemMapper());  
  if(items.isEmpty()){  
   return null;  
  }  
  return (Item)items.get(0);  
 }  

 

 public List<Item> findAllByUser(int user_id) {  
  String sql = "SELECT * FROM items WHERE user_id = ?";  
  Object[] params = new Object[]{user_id};  
  int[] types = new int[]{Types.INTEGER};  
  List items = jdbcTemplate.query(sql,params,types,new ItemMapper());  
  return items;  
 }  

 

protected class ItemMapper implements RowMapper {  
  
  public Object mapRow(ResultSet rs, int rowNum) throws SQLException {  
   Item item = new Item();  
   item.setId(rs.getInt("id"));  
   item.setUserId(rs.getInt("user_id"));  
   item.setName(rs.getString("name"));  
   item.setPhone(rs.getString("phone"));  
   item.setEmail(rs.getString("email"));  
  
   return item;  
  }  

 

调用:

 public List findItemsBySQL(String sql) throws DataAccessException {
  return (List)jdbcTemplate.query (sql,newRowMapperResultSetExtractor(new ItemMapper ()));

 }

 

}

其用意就是通过该接口将查询到的每行记录信息都封装到一个entity类里边,方便使用。

分享到:
评论

相关推荐

    SpringJdbcTemplate封装工具类

    "更新记录.docx"文件可能是项目开发过程中对SpringJdbcTemplate封装工具类的修改日志,记录了每次更新的功能改进、bug修复或性能优化等内容,这对于版本管理和问题排查非常有帮助。 通过上述分析,我们可以看到...

    Java利用Freemarker模板自动生成dto、dao、rowmapper、bo、service代码

    在Spring JDBC中,RowMapper接口用于将数据库查询结果的一行映射为一个Java对象。生成RowMapper代码时,通常会为每个DTO创建一个对应的RowMapper实现,这样可以在处理数据库查询结果时,方便地将结果集转换为DTO...

    java数据库操作封装.zip

    4. **RowMapper.java**: RowMapper是Spring框架中常见的一种接口,用于将数据库查询结果的每一行映射为Java对象。在这个压缩包中,这个接口可能被用来将数据库查询的结果转换为自定义的Java对象。开发人员可以实现这...

    SQL语句封装

    - **Python中的SQLAlchemy**:一个强大的SQL工具包,支持SQL语句的动态执行和编译,并允许用户定义SQL表达式为Python类的方法。 ```python from sqlalchemy import create_engine, MetaData, Table, select engine ...

    JdbcTemplate,自己封装的jdbc小框架

    例如,可能会有一个抽象的`SqlExecutor`类,里面定义了基本的SQL执行模板,子类可以重写其中的方法以适应不同的处理逻辑。 在实际应用中,JdbcTemplate框架还可能包含了事务管理的功能,例如支持编程式事务和声明式...

    java基于jdbctemplate数据持久层操作封装

    - "基于jdbctemplate封装"可能包含一个或多个类文件,如BaseJdbcDao.java,它定义了通用的方法,以及针对特定业务的子DAO类,如UserDao.java,实现了用户相关的数据库操作。 7. **使用示例**: - 创建一个新的...

    jdbcTemplate封装工程需要的jar包

    - `query(String sql, RowMapper&lt;T&gt; rowMapper)`:执行查询并使用自定义的RowMapper将结果映射到对象。 - `update(String sql)`:执行更新操作,如INSERT、UPDATE或DELETE。 - `execute(String sql)`:执行任意的...

    ifunsu封装基于springjdbc的dao层api

    在实际开发中,这可能是一个项目站点,用于展示ifunsu的API使用方法、示例、API文档、用户指南等资源。 综上所述,ifunsu封装的基于Spring JDBC的DAO层API是一个旨在简化数据库操作的工具,它提供了更友好的接口,...

    JAVA调用ORACLE存储过程通用类

    本篇文章将详细介绍一个用于Java应用程序中调用Oracle存储过程的通用类,帮助开发者更高效地实现相关功能。 #### 核心知识点解析 ##### 1. 类的基本结构 此通用类位于`com.gemship.common.service.impl`包下,名...

    Spring JdbcTemplate 常用方法整理

    在`JsonBean.java`中,可能定义了一个用于存储数据库查询结果的Java bean类,它的属性与数据库表的字段相对应,通过`RowMapper`映射到对象。例如: ```java public class JsonBean { private String field1; ...

    JDBC 数据库连接和操作的封装

    具体做法是在`DbUtil`类中定义获取连接和关闭连接的方法: ```java public class DbUtil { private static Connection conn; public static Connection getConnection() throws SQLException { // 加载配置文件...

    day39-Spring 18-Spring的JDBC模板:查询的操作

    如果查询结果有多列,所有列值将被封装到一个Map对象中,其中键为列名,值为对应的列值。 4. `queryForObject(String sql, RowMapper&lt;T&gt; rowMapper, Object... args)`:当预期查询结果只有一行数据时,可以使用此...

    Spring框架JdbcTemplate类中查询方法介绍

    JdbcTemplate 是 Spring 框架中 org.springframework.jdbc.core 包提供的 JDBC 模板类,它是核心类,其他模板类都是基于它封装完成的。JdbcTemplate 类主要提供四类方法:execute 方法、update 方法及 batchUpdate ...

    Spring3 JDBC 通用DAO封装2 dao层终于完成dao层大概上传完整代码

    在Spring3中,我们可以通过接口定义通用的CRUD(Create, Read, Update, Delete)操作,然后创建一个实现该接口的抽象类,封装共性的JDBC操作,比如执行SQL、处理结果集等。这样,对于每个具体的数据库表,只需要创建...

    Sping封装的JDBC应用小例子

    1. **依赖注入**: 在Spring配置文件中,我们需要定义一个JdbcTemplate bean,并将其注入到需要使用数据库操作的类中。例如: ```xml ``` 其中,`dataSource`是数据源的引用,负责管理数据库连接。 2. **...

    匹配实体类的实现了大部分功能分页 网页分页

    在IT行业中,分页是网页应用中不可或缺的一部分,特别是在处理大量数据时,它能有效提高用户体验,避免一次性加载过多内容导致页面响应速度下降。这里我们关注的标题是“匹配实体类的实现了大部分功能分页 网页分页...

    JAVA 版本ResultSet 转换为JAVABEAN的工具类

    这个工具类通常包含一个静态方法,接受ResultSet和JavaBean类型作为参数,然后遍历ResultSet,将数据填充到JavaBean对象中: ```java import java.sql.ResultSet; import java.sql.SQLException; public class ...

    spring模板模代码

    比如,在`JdbcTemplate`中,我们可以定义一个实现了`RowMapper`接口的类,该接口有一个`mapRow`方法,当JdbcTemplate从数据库查询数据时,会调用这个方法将每一行数据转换为Java对象。 **...

    MySQL增删改查工具类.zip

    - 插入(Insert):`insert(String sql)`方法用于执行INSERT语句,将数据插入到表中。 - 删除(Delete):`delete(String sql)`方法用于执行DELETE语句,根据指定条件删除记录。 - 更新(Update):`update...

    springJdbcDemo11_java_springjdbc_

    - **RowMapper**: 定义了将数据库一行数据映射到Java对象的方法。 - **ResultSetExtractor**: 处理整个结果集并返回单个值或集合。 3. **Spring JDBC配置** 在Spring配置文件中,我们需要配置DataSource,这是与...

Global site tag (gtag.js) - Google Analytics