JdbcTemplate基本使用

简介
JdbcTemplate是Spring框架中的一个模块,用于简化数据库操作。它提供了一种简单而强大的方式来执行SQL查询、更新和存储过程调用,并处理结果集。
  • 常用方法

    public int update(String sql, Object... args)
        参数说明:
            sql:要执行的SQL语句,可以是任何更新数据库的SQL语句,如INSERT、UPDATE、DELETE等。
            args:可变参数,用于指定SQL语句中的参数值。即:指定占位符
        返回值:
         返回一个int类型的值,表示受影响的行数。
        方法说明:
            该方法用于执行SQL语句来进行 增删改操作
            可以通过占位符(?)来指定SQL语句中的参数值,然后将实际的参数值作为args参数传入。
            该方法会返回更新操作所影响的行数,可以用于判断更新操作是否成功。
        
    public <T> T queryForObject(String sql, RowMapper<T> rowMapper, @Nullable Object... args)
        参数说明:
         rowMapper:用于将查询结果集中的每行数据映射到Java对象的接口。
        返回值:
         返回一个T类型的对象,表示查询结果。
        方法说明:
            该方法用于执行SQL查询语句,并返回单个结果对象。
         rowMapper参数指定了如何将查询结果映射为Java对象,通常是通过实现RowMapper接口的自定义类
            可以通过占位符(?)来指定SQL语句中的参数值,然后将实际的参数值作为args参数传入。
        
    public <T> T queryForObject(String sql, Class<T> requiredType, Object... args)   
        参数说明:
      requiredType:要返回的结果的类型。
     返回值:
     返回一个T类型的对象,表示查询结果。
    方法说明:
        该方法用于执行SQL查询语句,并返回单个结果对象。
        requiredType参数指定了要返回的结果的类型,可以是基本数据类型、包装类、String、自定义的Java对象等。
        可以通过占位符(?)来指定SQL语句中的参数值,然后将实际的参数值作为args参数传入。
        
    public <T> List<T> query(String sql, RowMapper<T> rowMapper, @Nullable Object... args)
        返回值:
            返回一个包含T类型对象的List,表示查询结果集。
        方法说明:
            该方法用于执行SQL查询语句,并使用提供的RowMapper将结果集中的每行数据映射为Java对象。
            rowMapper参数指定了如何将查询结果映射为Java对象,通常是通过实现RowMapper接口的自定义类。
            可以通过占位符(?)来指定SQL语句中的参数值,然后将实际的参数值作为args参数传入。
  • RowMapper

    RowMapper<T> 接口是Spring框架中用于将查询结果集中的每一行数据映射为一个对象的接口。它是JdbcTemplate类中query方法的参数之一,用于将查询结果集中的每一行数据映射为指定类型的对象。

    RowMapper<T> 接口中只有一个方法:
     mapRow(ResultSet rs, int rowNum) throws SQLException;
     rs代表查询结果集中的一行数据,以通过rs对象获取当前行中的各个列的数据,比如通过getInt、getString等方法获取对应列的数据。
        rowNum代表当前行的行号。
    BeanPropertyRowMapper<T>是Spring框架中的一个用于将查询结果映射为JavaBean对象的类。它实现了RowMapper<T>接口,可以将查询结果中的每一行数据映射为指定类型的JavaBean对象。
    BeanPropertyRowMapper<T>使用Java的反射机制来自动将查询结果的列与JavaBean对象的属性进行匹配,从而省去了手动设置属性的繁琐工作。
        
    使用例子:jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(User.class));
具体使用

1、搭建环境

引入依赖
<dependencies>
    <!--spring jdbc  Spring 持久化层支持jar包-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>6.0.2</version>
    </dependency>
    <!-- MySQL驱动 -->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.30</version>
    </dependency>
    <!-- 数据源 -->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>1.2.15</version>
    </dependency>
</dependencies>
配置数据库数据
database.driver = com.mysql.cj.jdbc.Driver
database.url = jdbc:mysql://localhost:3306/spring?characterEncoding=utf8&useSSL=false
database.username = root
database.password = 1234
spring配置文件信息

<!--  导入外部属性文件  -->
<context:property-placeholder location="classpath:jdbc.properties" />

<!--  配置数据库连接池  -->
<bean id="druidDataSource" class="com.alibaba.druid.pool.DruidDataSource">
    <property name="driverClassName" value="${database.driver}" />
    <property name="url" value="${database.url}" />
    <property name="username" value="${database.username}" />
    <property name="password" value="${database.password}" />
</bean>

<!--  配置 JdbcTemplate  -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
    <!--   配置数据源     -->
    <property name="dataSource" ref="druidDataSource" />
</bean>

2、增删改查操作

//插入操作
@Test
public void insertEmp01(){
    String sql = "insert into t_emp values(null,?,?,?)";
    int result = jdbcTemplate.update(sql, "张三""20""男");

    System.out.println("插入成功:" + result);
}

//更新数据
@Test
public void updateEmp01(){
    String sql = "update t_emp set name=? where id=?";
    int result = jdbcTemplate.update(sql, "zhangsan"3);

    System.out.println("插入成功:" + result);
}

//删除数据
@Test
public void deleteEmp01(){
    String sql = "delete from t_emp where id=?";
    int result = jdbcTemplate.update(sql, 3);

    System.out.println("插入成功:" + result);
}

//查询一条数据
//使用 RowMapper<T> 接口
@Test
public void queryEmp01(){
    String sql = "select * from t_emp where id=?";
    Emp emp = jdbcTemplate.queryForObject(sql, (rs, rowNum) -> {
        Emp emp01 = new Emp();
        emp01.setId(rs.getInt("id"));
        emp01.setAge(rs.getInt("age"));
        emp01.setName(rs.getString("name"));
        emp01.setSex(rs.getString("sex"));
        return emp01;
    }, 4);

    System.out.println(emp);
}

//查询一条数据
//使用 BeanPropertyRowMapper<T> 类
@Test
public void queryEmp02(){
    String sql = "select * from t_emp where id=?";
    Emp emp = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<>(Emp.class), 4);

    System.out.println(emp);
}

//查询多条数据
@Test
public void queryEmp03(){
    String sql = "select * from t_emp";
    List<Emp> emps = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(Emp.class));

    System.out.println(emps);
}

//查询单个数据
@Test
public void queryCount01(){
    String sql = "select count(1) from t_emp";
    Integer count = jdbcTemplate.queryForObject(sql, Integer.class);

    System.out.println(count);
}


原文始发于微信公众号(代码之旅):JdbcTemplate基本使用

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/203672.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!