JDBCTemplate 的Query方法的重要说明

本文介绍了如何在Spring中使用JDBCTemplate的queryForObject方法进行精确查询。通过示例展示了如何配置JdbcTemplate并执行SQL,从emp表中根据id获取ename。同时,文章强调了实体类的设计原则,包括类名、属性名与数据库表和字段的一致性,以及属性类型和setter方法的要求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package Test03;

import JDBCUtils.JDBCUtils;
import org.junit.Test;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;

import java.sql.Date;
import java.util.List;
import java.util.Map;

/*
JDBCTemplate实现查询:queryXXX()

        一、query返回数据
            1.public <T> T queryForObject(String sql, Class<T> requiredType, Object... args)    返回一个数据,用指定类型接收
            2.public Map<String, Object> queryForMap(String sql, Object... args)                返回一行数据,用Map集合接收
            3.public List<Map<String, Object>> queryForList(String sql, Object... args)         返回多行数据,用list接受,list中保存的是多个map

*重要*  二、使用RowMapper做映射返回对象(此时需要创建实体类emp)
            4.public <T> T queryForObject(String sql, RowMapper<T> rowMapper, @Nullable Object... args)     返回一个映射对象
            5.public <T> List<T> query(String sql, RowMapper<T> rowMapper, @Nullable Object... args)                        了                                                    。          返回多个映射对象存入到list集合中

*/
public class Test02 {
//1.
@Test
public void test_queryForObject() {
JdbcTemplate jt = new JdbcTemplate(JDBCUtils.getDataSource());
String ename = jt.queryForObject(“SELECT ename FROM emp WHERE id=?”, String.class, 3);
System.out.println(“ename:” + ename);
}

//2.
@Test
public void test_queryForMap() {
    JdbcTemplate jt = new JdbcTemplate(JDBCUtils.getDataSource());
    Map<String, Object> map = jt.queryForMap("SELECT * FROM emp WHERE id=?", 3);
    System.out.println(map);
}

//3.
@Test
public void test_queryForList() {
    JdbcTemplate jt = new JdbcTemplate(JDBCUtils.getDataSource());
    List<Map<String, Object>> list = jt.queryForList("SELECT * FROM emp");
    for (Map<String, Object> map : list) {
        System.out.println(map);
    }
}

//4.
@Test
public void test_queryForObject_RowMapper() {
    JdbcTemplate jt = new JdbcTemplate(JDBCUtils.getDataSource());
    emp emp = jt.queryForObject("SELECT * FROM emp WHERE id=?", new BeanPropertyRowMapper<>(emp.class), 3);
    /**
     * 这里rowmapper是一个接口,快捷键Ctrl+H查看选中接口的结构图,使用BeanPropertyRowMapper<>(类名.class)
     */
    System.out.println(emp);
}

//5.
@Test
public void test_queryFor() {
    JdbcTemplate jt = new JdbcTemplate(JDBCUtils.getDataSource());
    List<emp> empList = jt.query("SELECT * FROM emp", new BeanPropertyRowMapper<>(emp.class));
    for (emp emp : empList) {
        System.out.println(emp);
    }
}

}

/*
实体类要求:
1.两条建议:类名=表名,属性名=字段名
2.两条必须:成员属性类型最好使用包装类类型,setXXX方法,XXX必须和数据库列名一致
*/
class emp {
private Integer id;
private String ename;
private Double sal;
private Date birth;

public Integer getId() {
    return id;
}

public void setId(Integer id) {
    this.id = id;
}

public String getEname() {
    return ename;
}

public void setEname(String ename) {
    this.ename = ename;
}

public Double getSal() {
    return sal;
}

public void setSal(Double sal) {
    this.sal = sal;
}

public Date getBirth() {
    return birth;
}

public void setBirth(Date birth) {
    this.birth = birth;
}

@Override
public String toString() {
    return "emp{" +
            "id=" + id +
            ", ename='" + ename + '\'' +
            ", sal=" + sal +
            ", birth=" + birth +
            '}';
}

}

——————————————

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值