JdbcTemplate(操作数据库-查询返回对象、查询返回集合)
1.创建数据库
数据库中有三条记录,数据库名为user_db,数据库表为t_book
2.新建实体类:
Book类中的每一个属性对应数据库中的一条记录
package org.example.spring.entity;public class Book {private int userId;private String username;@Overridepublic String toString() {return "Book{" +"userId=" + userId +", username='" + username + '\'' +'}';}public int getUserId() {return userId;}public void setUserId(int userId) {this.userId = userId;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}}
3.创建dao层
抽象类:
package org.example.spring.dao;import org.example.spring.entity.Book;public interface BookDao {//查询对象的方法Book findBookInfo(int id);//查询集合的方法List<Book> findAllBook();
}
实现类:
package org.example.spring.dao;import org.example.spring.entity.Book;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;@Repository
public class BookDaoImpl implements BookDao{//注入jdbcTemplate对象@Autowiredprivate JdbcTemplate jdbcTemplate;//查询对象@Overridepublic Book findBookInfo(int id) {String sql="select * from t_book where user_id=?";//queryForObject()有三个参数
// 第一个参数sql语句
// 第二个参数 RowMapper(这是spring中封装好的一个接口,针对返回不同类型数据,使用这个接口里面的实现类完成数据的【封装】)
// 第三个参数 sql语句值Book book = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<Book>(Book.class), id);return book;}//查询集合@Overridepublic List<Book> findAllBook() {String sql="select * from t_book";//query()有三个参数
// 第一个参数sql语句
// 第二个参数 RowMapper(这是spring中封装好的一个接口,针对返回不同类型数据,使用这个接口里面的实现类完成数据的【封装】)
// 第三个参数 sql语句值List<Book> query = jdbcTemplate.query(sql, new BeanPropertyRowMapper<Book>(Book.class));return query;}
}
4.创建service类
package org.example.spring.service;import org.example.spring.dao.BookDao;
import org.example.spring.entity.Book;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;@Service
public class BookService {//注入dao@Autowiredprivate BookDao bookDao;//查询返回对象,根据id查询public Book findOne(int id){return bookDao.findBookInfo(id);}}
5.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:aop="http://www.springframework.org/schema/aop"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"><!-- 开启组件扫描--><context:component-scan base-package="org.example"></context:component-scan>
<!--数据库连接池--><bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close"><property name="url" value="jdbc:mysql://localhost:3306/user_db?useSSL=false&useUnicode=true&characterEncoding=UTF-8"/><property name="username" value="root"/><property name="password" value="sise"/><property name="driverClassName" value="com.mysql.jdbc.Driver"/></bean><!-- 创建jdbcTemplate对象--><bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<!--需要注入数据源信息--><property name="dataSource" ref="dataSource"></property></bean>
</beans>
6. 测试类
package org.example.spring.test;import org.example.spring.entity.Book;
import org.example.spring.service.BookService;
import org.junit.jupiter.api.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class TestBook
{@Testpublic void test01(){ApplicationContext context=new ClassPathXmlApplicationContext("bean1.xml");BookService bookService = context.getBean("bookService", BookService.class);//查询返回对象Book one = bookService.findOne(2);System.out.println(one);//查询返回集合List<Book> all = bookService.findAll();System.out.println(all);}}
7.测试结果:
返回对象:
返回集合: