query和queryforobject区别
时间: 2023-05-02 08:00:55 浏览: 98
query和queryForObject是Java中使用JDBC进行数据库操作时的两种不同的方法。query通常用于返回多条记录的查询结果,而queryForObject则用于返回单条记录的查询结果。query通常返回一个RowMapper接口的实现类对象,这个类可以将查询结果映射为一个Java对象,而queryForObject则直接将查询结果映射为一个Java对象。
相关问题
jdbctemplate查询某个字段 不使用queryForObject的方式
你可以使用 `query` 方法,它可以返回一个包含查询结果的 List 对象。然后你可以遍历这个 List 对象,获取某个字段的值。
以下是一个示例代码:
```java
public List<String> getAllNames() {
String sql = "SELECT name FROM users";
List<String> names = jdbcTemplate.query(sql, new RowMapper<String>() {
@Override
public String mapRow(ResultSet rs, int rowNum) throws SQLException {
return rs.getString("name");
}
});
return names;
}
```
在这个示例中,我们使用 `jdbcTemplate.query()` 方法来执行查询并返回一个包含所有用户姓名的 List 对象。在 `query()` 方法的第一个参数中,我们传入 SQL 查询语句,而在第二个参数中,我们传入一个 RowMapper 对象,用于将结果集中的每一行数据映射为一个 String 对象,这里我们只获取了 name 字段的值。最后,我们返回一个包含所有姓名的 List 对象。
给下面代码添加注释 public class TestJdbcTemplate { JdbcTemplate template; @Before public void init() throws Exception { template= new JdbcTemplate(DruidUtils.getDataSource()); } @Test public void testInsert() throws Exception { template.update("insert into account(name,balance) values(?,?)","王麻子",8888); } @Test public void testUpdate() throws Exception { template.update("update account set balance=? where id=?",4444,4); } @Test public void testDelete() throws Exception { template.update("delete from account where id=?",4); } @Test public void testFindAll() throws Exception { List<Emp1> emps = template.query("select * from emp", new BeanPropertyRowMapper<Emp1>(Emp1.class)); for (Emp1 e :emps) { System.out.println(e); } } @Test public void testFindCount(){ Integer count = template.queryForObject("select count(1) from emp", Integer.class); System.out.println(count); } @Test public void testFindByPage() throws Exception { List<Emp1> emps = template.query("select * from emp limit ?,?", new BeanPropertyRowMapper<Emp1>(Emp1.class),10,5); for (Emp1 e :emps) { System.out.println(e); } } }
// 导入JdbcTemplate类
public class TestJdbcTemplate {
// 声明一个JdbcTemplate对象
JdbcTemplate template;
// 在执行每个测试方法前初始化JdbcTemplate对象
@Before
public void init() throws Exception {
// 获取数据源并创建JdbcTemplate对象
template= new JdbcTemplate(DruidUtils.getDataSource());
}
// 测试插入操作
@Test
public void testInsert() throws Exception {
// 使用JdbcTemplate的update方法插入数据
template.update("insert into account(name,balance) values(?,?)","王麻子",8888);
}
// 测试更新操作
@Test
public void testUpdate() throws Exception {
// 使用JdbcTemplate的update方法更新数据
template.update("update account set balance=? where id=?",4444,4);
}
// 测试删除操作
@Test
public void testDelete() throws Exception {
// 使用JdbcTemplate的update方法删除数据
template.update("delete from account where id=?",4);
}
// 测试查询所有数据操作
@Test
public void testFindAll() throws Exception {
// 使用JdbcTemplate的query方法查询数据,并将结果转换为Emp1类的List
List<Emp1> emps = template.query("select * from emp", new BeanPropertyRowMapper<Emp1>(Emp1.class));
// 遍历List并输出每个Emp1对象
for (Emp1 e :emps) {
System.out.println(e);
}
}
// 测试查询数据条数操作
@Test
public void testFindCount(){
// 使用JdbcTemplate的queryForObject方法查询数据条数
Integer count = template.queryForObject("select count(1) from emp", Integer.class);
// 输出查询结果
System.out.println(count);
}
// 测试分页查询操作
@Test
public void testFindByPage() throws Exception {
// 使用JdbcTemplate的query方法分页查询数据,并将结果转换为Emp1类的List
List<Emp1> emps = template.query("select * from emp limit ?,?", new BeanPropertyRowMapper<Emp1>(Emp1.class),10,5);
// 遍历List并输出每个Emp1对象
for (Emp1 e :emps) {
System.out.println(e);
}
}
}
阅读全文