spring-210728-03---JdbcTemplate操作数据库-查询功能

本文展示了如何使用Spring的JdbcTemplate进行数据库查询操作,包括查询单个记录、多个记录以及计数。通过UserDao接口、UserDaoImpl实现类、UserService业务层以及测试类TestUser02,详细解释了DQL操作的实现步骤,并配置了Spring的bean01.xml文件以连接数据库。
摘要由CSDN通过智能技术生成

spring-210728-03—JdbcTemplate操作数据库-查询功能


演示

UserDao02.java(dao层接口)

package com.bgy.spring.dao;
import com.bgy.spring.entity.User;
import java.util.List;

public interface UserDao02 {

    // 查询表的记录行
    int seletCount();

    // 查询返回对象
    User finUserInfo(String id);

    // 查询返回集合
    List<User> finUserAll();
}

UserDaoImpl02.java(这里实现DQL操作)

package com.bgy.spring.dao;

import com.bgy.spring.entity.User;
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 UserDaoImpl02 implements UserDao02{

    // 注入JdbcTemplate
    @Autowired
    private JdbcTemplate jdbcTemplate;

    // 查询表的记录行
    /*
        jdbcTemplate.queryForObject(String sql , Class<T> requiredType);
            第一个参数:sql语句
            第二个参数:返回类型class
     */
    @Override
    public int seletCount() {
        String sql = "select count(*) from t_user";
        Integer count = jdbcTemplate.queryForObject(sql, Integer.class);
        return count;
    }

    // 查询返回对象
    /*
        jdbcTemplate.queryForObject(String sql , RowMapper<T> rowMapper , Object... args)
            第一个参数:sql语句
            第二个参数:RowMapper,是一个接口,返回不同的数据类型,使用这个接口里面的实现类完成数据的封装。
            第三个参数:sql语句中的值
     */
    @Override
    public User finUserInfo(String id) {
        String sql = "select * from t_user where user_id=?";

        User user = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<User>(User.class), id);
        return user;
    }

    // 查询返回集合
    /*
        jdbcTemplate.query(String sql , RowMapper<T> rowMapper , Object... args)
        第一个参数:sql语句
        第二个参数:RowMapper,是一个接口,返回不同的数据类型,使用这个接口里面的实现类完成数据的封装。
        第三个参数:sql语句中的值
     */
    @Override
    public List<User> finUserAll() {
        String sql = "select * from t_user";

        List<User> userList = jdbcTemplate.query(sql,new BeanPropertyRowMapper<User>(User.class));
        return userList;
    }
}

UserService02.java(这里调用dao)

package com.bgy.spring.service;

import com.bgy.spring.dao.UserDao02;
import com.bgy.spring.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UserService02 {

    // 注入UserDao02
    @Autowired
    private UserDao02 userDao02;


    /**
     * 查询表的记录行
     * @return
     */
    public int findCount(){
        return userDao02.seletCount();
    }

    /**
     * 查询返回对象
     * @return User
     */
    public User findUserInfo(String id){
        return userDao02.finUserInfo(id);
    }


    /**
     * 查询查询返回集合
     * @return User
     */
    public List<User> findUserAll(){
        return userDao02.finUserAll();
    }
}

TestUser02.java(测试)

import com.bgy.spring.entity.User;
import com.bgy.spring.service.UserService02;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import java.util.List;

public class TestUser02 {

    /**
     * 测试查询表的记录行
     */
    @Test
    public void test01(){
        ApplicationContext context = new ClassPathXmlApplicationContext("bean01.xml");

        UserService02 userService02 = context.getBean("userService02", UserService02.class);

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

    /**
     * 测试查询返回对象
     */
    @Test
    public void test02(){
        ApplicationContext context = new ClassPathXmlApplicationContext("bean01.xml");

        UserService02 userService02 = context.getBean("userService02", UserService02.class);

        User userInfo = userService02.findUserInfo("1003");
        System.out.println(userInfo);
        System.out.println(userInfo.getUserId());
        System.out.println(userInfo.getUsername());
        System.out.println(userInfo.getUstatus());
    }

    /**
     * 测试查询返回集合
     */
    @Test
    public void test03(){
        ApplicationContext context = new ClassPathXmlApplicationContext("bean01.xml");

        UserService02 userService02 = context.getBean("userService02", UserService02.class);

        List<User> userAll = userService02.findUserAll();

        System.out.println(userAll);
    }
}

bean01.xml(Spring配置文件)

<?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="com.bgy.spring"></context:component-scan>

    <!-- 数据库连接池 -->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
          destroy-method="close">
        <property name="driverClassName" value="com.mysql.cj.jdbc.Driver" />
        <property name="url" value="jdbc:mysql://localhost:3306/spring_test_210728_01?serverTimezone=UTC&amp;useSSL=false" />
        <property name="username" value="root" />
        <property name="password" value="admin" />
    </bean>

    <!-- 创建JdbcTemplate对象 -->
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">

        <!-- 注入DataSource -->
        <property name="dataSource" ref="dataSource"></property>

    </bean>
</beans>

User.java(实体类)

package com.bgy.spring.entity;

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

    public String getUserId() {
        return userId;
    }
    public void setUserId(String userId) {
        this.userId = userId;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getUstatus() {
        return ustatus;
    }
    public void setUstatus(String ustatus) {
        this.ustatus = ustatus;
    }
    
    @Override
    public String toString() {
        return "User{" +
                "userId='" + userId + '\'' +
                ", username='" + username + '\'' +
                ", ustatus='" + ustatus + '\'' +
                '}';
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值