Spring之jdbcTemplate:查询的三种方式(单个值、单个对象、对象集合)
JdbcTemplateDemo2.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 | package helloworld.jdbcTemplate; import org.springframework.jdbc.core.JdbcTemplate; import java.sql.*; import java.util.List; /** * 功能:通过JdbcTemplate实现查询操作 * 查询结果需要自己封装(实现RowMapper接口) */ public class JdbcTemplateDemo2 { // JdbcTemplate使用步骤: // 1、导入jar包;2、设置数据库信息;3、设置数据源;4、调用jdbcTemplate对象中的方法实现操作 public static void main(String[] args) { // 设置数据库信息和据源 JdbcTemplateObject jdbcTemplateObject = new JdbcTemplateObject(); JdbcTemplate jdbcTemplate = jdbcTemplateObject.getJdbcTemplate(); // 插入数据 // insertData(); // 查询返回某一个值:查询表中数据总数 queryForOne(jdbcTemplate); // 查询返回对象 queryForObject(jdbcTemplate); // 查询返回list集合 queryForList(jdbcTemplate); // 使用JDBC底层实现查询 queryWithJDBC(); } // 插入数据 public static void insertData() { JdbcTemplateObject jdbcTemplateObject = new JdbcTemplateObject(); JdbcTemplate jdbcTemplate = jdbcTemplateObject.getJdbcTemplate(); // 调用jdbcTemplate对象中的方法实现操作 String sql = "insert into user value(?,?,?)" ; //表结构:id(int、自增),name(varchar 100),age(int 10) int rows = jdbcTemplate.update(sql, null , "Tom" , 35 ); System.out.println( "插入行数:" + rows); } /** * 查询返回某一个值:查询表中数据总数 */ public static void queryForOne(JdbcTemplate jdbcTemplate) { String sql = "select count(*) from user" ; // 调用方法获得记录数 int count = jdbcTemplate.queryForObject(sql, Integer. class ); System.out.println( "数据总数:" + count); } /** * 功能:查询返回单个对象 * 步骤:新建MyRowMapper类实现RowMapper接口,重写mapRow方法,指定返回User对象 */ public static void queryForObject(JdbcTemplate jdbcTemplate) { String sql = "select * from user where name = ?" ; // 新建MyRowMapper类实现RowMapper接口,重写mapRow方法,指定返回User对象 User user = jdbcTemplate.queryForObject(sql, new MyRowMapper(), "Tom" ); System.out.println(user); } /** * 功能:查询返回对象集合 * 步骤:新建MyRowMapper类实现RowMapper接口,重写mapRow方法,指定返回User对象 */ public static void queryForList(JdbcTemplate jdbcTemplate) { String sql = "select * from user" ; // 第三个参数可以省略 List<User> users = jdbcTemplate.query(sql, new MyRowMapper()); System.out.println(users); } /** * 使用JDBC底层实现查询 */ public static void queryWithJDBC() { Connection conn = null ; PreparedStatement psmt = null ; ResultSet rs = null ; String jdbcUrl = "jdbc:mysql://192.168.184.130:3306/gxrdb" ; try { // 加载驱动 Class.forName( "com.mysql.jdbc.Driver" ); // 创建连接 conn = DriverManager.getConnection(jdbcUrl, "root" , "root" ); String sql = "select * from user where name = ?" ; // 预编译sql psmt = conn.prepareStatement(sql); // 从1开始,没有就不需要 psmt.setString( 1 , "Tom" ); // 执行sql rs = psmt.executeQuery(); // int num = psmt.executeUpdate(); //增删改,返回操作记录数 // 遍历结果集 while (rs.next()) { //根据列名查询对应的值,也可以是位置序号 String name = rs.getString( "name" ); String age = rs.getString( "age" ); System.out.println(name); System.out.println(age); } } catch (Exception e) { e.printStackTrace(); } finally { try { rs.close(); psmt.close(); conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } } |
MyRowMapper.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | package helloworld.jdbcTemplate; import org.springframework.jdbc.core.RowMapper; import java.sql.ResultSet; import java.sql.SQLException; /** * 实现RowMapper接口,返回User对象 * */ public class MyRowMapper implements RowMapper<User>{ @Override public User mapRow(ResultSet resultSet, int i) throws SQLException { // 获取结果集中的数据 String name = resultSet.getString( "name" ); String age = resultSet.getString( "age" ); // 把数据封装成User对象 User user = new User(); user.setName(name); user.setAge(age); return user; } } |
JdbcTemplateObject.java
package helloworld.jdbcTemplate; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.datasource.DriverManagerDataSource; /** * 功能:设置数据库信息和数据源 * * JdbcTemplat使用 * 1、导入jar包;2、设置数据库信息;3、设置数据源;4、调用jdbcTemplate对象中的方法实现操作 */ public class JdbcTemplateObject { DriverManagerDataSource dataSource; JdbcTemplate jdbcTemplate; public JdbcTemplateObject() { // 设置数据库信息 this.dataSource = new DriverManagerDataSource(); this.dataSource.setDriverClassName("com.mysql.jdbc.Driver"); this.dataSource.setUrl("jdbc:mysql://192.168.184.130:3306/gxrdb"); this.dataSource.setUsername("root"); this.dataSource.setPassword("root"); // 设置数据源 this.jdbcTemplate = new JdbcTemplate(dataSource); } public DriverManagerDataSource getDataSource() { return dataSource; } public void setDataSource(DriverManagerDataSource dataSource) { this.dataSource = dataSource; } public JdbcTemplate getJdbcTemplate() { return jdbcTemplate; } public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; } }
User.java
package helloworld.jdbcTemplate; /** * 数据封装类 * */ public class User { private String name; private String age; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } @Override public String toString() { return "User{姓名:" + name + "; 年龄:" + age + "}"; } }
愿你眼中有光芒,活成你想要的模样
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具