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

2024-04-18 02:38

本文主要是介绍RowMapper 将查出的一行记录封装到用户定义的类中,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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类里边,方便使用。

这篇关于RowMapper 将查出的一行记录封装到用户定义的类中的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/913552

相关文章

Node.js学习记录(二)

目录 一、express 1、初识express 2、安装express 3、创建并启动web服务器 4、监听 GET&POST 请求、响应内容给客户端 5、获取URL中携带的查询参数 6、获取URL中动态参数 7、静态资源托管 二、工具nodemon 三、express路由 1、express中路由 2、路由的匹配 3、路由模块化 4、路由模块添加前缀 四、中间件

Spring 源码解读:自定义实现Bean定义的注册与解析

引言 在Spring框架中,Bean的注册与解析是整个依赖注入流程的核心步骤。通过Bean定义,Spring容器知道如何创建、配置和管理每个Bean实例。本篇文章将通过实现一个简化版的Bean定义注册与解析机制,帮助你理解Spring框架背后的设计逻辑。我们还将对比Spring中的BeanDefinition和BeanDefinitionRegistry,以全面掌握Bean注册和解析的核心原理。

记录每次更新到仓库 —— Git 学习笔记 10

记录每次更新到仓库 文章目录 文件的状态三个区域检查当前文件状态跟踪新文件取消跟踪(un-tracking)文件重新跟踪(re-tracking)文件暂存已修改文件忽略某些文件查看已暂存和未暂存的修改提交更新跳过暂存区删除文件移动文件参考资料 咱们接着很多天以前的 取得Git仓库 这篇文章继续说。 文件的状态 不管是通过哪种方法,现在我们已经有了一个仓库,并从这个仓

【Kubernetes】K8s 的安全框架和用户认证

K8s 的安全框架和用户认证 1.Kubernetes 的安全框架1.1 认证:Authentication1.2 鉴权:Authorization1.3 准入控制:Admission Control 2.Kubernetes 的用户认证2.1 Kubernetes 的用户认证方式2.2 配置 Kubernetes 集群使用密码认证 Kubernetes 作为一个分布式的虚拟

JavaSE——封装、继承和多态

1. 封装 1.1 概念      面向对象程序三大特性:封装、继承、多态 。而类和对象阶段,主要研究的就是封装特性。何为封装呢?简单来说就是套壳屏蔽细节 。     比如:对于电脑这样一个复杂的设备,提供给用户的就只是:开关机、通过键盘输入,显示器, USB 插孔等,让用户来和计算机进行交互,完成日常事务。但实际上:电脑真正工作的却是CPU 、显卡、内存等一些硬件元件。

学习记录:js算法(二十八):删除排序链表中的重复元素、删除排序链表中的重复元素II

文章目录 删除排序链表中的重复元素我的思路解法一:循环解法二:递归 网上思路 删除排序链表中的重复元素 II我的思路网上思路 总结 删除排序链表中的重复元素 给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。 图一 图二 示例 1:(图一)输入:head = [1,1,2]输出:[1,2]示例 2:(图

哈希表的封装和位图

文章目录 2 封装2.1 基础框架2.2 迭代器(1)2.3 迭代器(2) 3. 位图3.1 问题引入3.2 左移和右移?3.3 位图的实现3.4 位图的题目3.5 位图的应用 2 封装 2.1 基础框架 文章 有了前面map和set封装的经验,容易写出下面的代码 // UnorderedSet.h#pragma once#include "HashTable.h"

封装MySQL操作时Where条件语句的组织

在对数据库进行封装的过程中,条件语句应该是相对难以处理的,毕竟条件语句太过于多样性。 条件语句大致分为以下几种: 1、单一条件,比如:where id = 1; 2、多个条件,相互间关系统一。比如:where id > 10 and age > 20 and score < 60; 3、多个条件,相互间关系不统一。比如:where (id > 10 OR age > 20) AND sco

perl的学习记录——仿真regression

1 记录的背景 之前只知道有这个强大语言的存在,但一直侥幸自己应该不会用到它,所以一直没有开始学习。然而人生这么长,怎就确定自己不会用到呢? 这次要搭建一个可以自动跑完所有case并且打印每个case的pass信息到指定的文件中。从而减轻手动跑仿真,手动查看log信息的重复无效低质量的操作。下面简单记录下自己的思路并贴出自己的代码,方便自己以后使用和修正。 2 思路整理 作为一个IC d

浙大数据结构:树的定义与操作

四种遍历 #include<iostream>#include<queue>using namespace std;typedef struct treenode *BinTree;typedef BinTree position;typedef int ElementType;struct treenode{ElementType data;BinTree left;BinTre