Spring学习(十):JdbcTemplate操作数据库实现查询功能

今天记录查询返回三种类型:

1、查询后返回一个值

2、查询后返回一个对象

3、查询后返回一个集合

1、查询后返回一个值

        例如:查询表中有多少条记录,返回一个int

代码间的具体逻辑见上篇博客

实体类Book:

package demo.entity;

public class Book {
    private String userId;
    private String username;
    private String ustatus;

    public String getUserId() {
        return userId;
    }
    public String getUsername() {
        return username;
    }
    public String getUstatus() {
        return ustatus;
    }
    public void setUserId(String userId) {
        this.userId = userId;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public void setUstatus(String ustatus) {
        this.ustatus = ustatus;
    }
}

BookDao:

package demo.dao;

        import demo.entity.Book;

public interface BookDao {
    //添加
    public void addBook(Book book);

    //查询记录数量
    int selectCount();
}

BookDaoImpl:

package demo.dao;

import demo.entity.Book;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;

/**
 * 实现数据库的操作
 */
@Repository
public class BookDaoImpl implements BookDao {

    //注入jdbcTemplate
    @Autowired
    private JdbcTemplate jdbcTemplate;

    

    @Override
    public int selectCount() {
        String sql = "select count(*) from t_book";

        /*
            第一个参数:sql
            第二个参数:返回类型的class
         */
        Integer integer = jdbcTemplate.queryForObject(sql, Integer.class);
        return integer;
    }
}

BookService:

package demo.service;

import demo.dao.BookDao;
import demo.entity.Book;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class BookService {
    //注入dao
    @Autowired
    private BookDao bookDao;

    //添加
    public void addBook(Book book){
        bookDao.addBook(book);
    }

    //查询表记录数
    public int findCount(){
        int count = bookDao.selectCount();
        return count;
    }
}

测试一下:

@Test
    public void test2(){
        ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
        BookService bookService = context.getBean("bookService", BookService.class);

        int count = bookService.findCount();
        System.out.println(count);
    }

运行结果:

数据库中确实只有一条记录:

Spring学习(十):JdbcTemplate操作数据库实现查询功能_第1张图片

 2、查询后返回一个对象

        与之前返回值的代码是一个思路,只不过返回类型不同,调用的queryForObject()方法中传的参数不同,这里就只放UserDaoImpl的代码了:

package demo.dao;

import demo.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
    @Autowired
    private JdbcTemplate jdbcTemplate;

    

    //查询一条记录
    @Override
    public Book selectBook(String id) {
        String sql = "select * from t_book where user_id=? ";

        /*
            第一个参数:sql
            第二个参数:RowMapper,是一个接口,返回不同类型的数据
                        使用该接口的实现类完成数据的封装
            第三个参数:填充占位符的值
         */
        Book book = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper(Book.class),id);
        return book;

    }
}

测试时,传入id值为“1”,表示查询表中的第一条数据

测试结果:

Spring学习(十):JdbcTemplate操作数据库实现查询功能_第2张图片

3、查询后返回一个集合

        例如:返回表中所有的记录

BookDaoImpl:

package demo.dao;

import demo.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;

import java.util.List;

/**
 * 实现数据库的操作
 */
@Repository
public class BookDaoImpl implements BookDao {

    //注入jdbcTemplate
    @Autowired
    private JdbcTemplate jdbcTemplate;

    
    //

    @Override
    public List selectAllBook() {
        String sql = "select * from t_book";

        List list = jdbcTemplate.query(sql,new BeanPropertyRowMapper(Book.class));
        return list;
    }
}

 调用的是query()方法,传的参数和上面基本相同

测试结果:

Spring学习(十):JdbcTemplate操作数据库实现查询功能_第3张图片

和数据库里的记录刚好对应:

Spring学习(十):JdbcTemplate操作数据库实现查询功能_第4张图片

你可能感兴趣的:(java,java,spring,intellij-idea,java-ee,jdbc)