java Spring JdbcTemplate配合mysql将表中的一条记录查询成一个类的数据对象

查询操作 主要分为 查询出某个值 查询出一个对象 查询出一个集合

之前我们在文章java Spring JdbcTemplate配合mysql查询一个表中具体有几条数据中演示了查询某个值的方法

那么 下面我们来演示 查询一个对象

首先 查询 还是非常常用的 比如 你在一个图书界面列表中 点其中一本书进去看详情 他就要通过id 去获取这本书的对象 从而实现详情的展示

先做一下准备工作 数据库中有一个 test数据库 在下面有一张表 叫 user_list 里面有这样几条数据
在这里插入图片描述
我们将用它作为数据来源

我们在src下创建一个包 叫 mydata
在里面创建一个类 叫 user_list
参考代码如下

package mydata;

public class user_list {
    private int user_id;
    private String user_name;
    private String user_post;
    private int superior_id;
    public int getUser_id() {
        return user_id;
    }
    public void setUser_id(int user_id) {
        this.user_id = user_id;
    }
    public String getUser_name() {
        return user_name;
    }
    public void setUser_name(String user_name) {
        this.user_name = user_name;
    }
    public String getUser_post() {
        return user_post;
    }
    public void setUser_post(String user_post) {
        this.user_post = user_post;
    }
    public int getSuperior_id() {
        return superior_id;
    }
    public void setSuperior_id(int superior_id) {
        this.superior_id = superior_id;
    }
}

这里 的几个属性 都会数据中的user_list 表一一对应 这就是一个属性类 我们将用它作为数据库的对象载体

在 src下创建目录 叫 dao
在下面创建一个接口 叫 BookDao 参考代码如下

package dao;

import mydata.user_list;

public interface BookDao {
    user_list getUser_list(int user_id);
}

我们定义了一个getUser_list方法 他接收一个int数字类型的属性 叫 user_id 然后返回一个user_list 对象类型的值

因为 详情对象查询 都要通过id去查 所以 这里要接收这个user_id

然后 我们在dao中创建一个类 叫 BookDaoImpl
编写代码如下

package dao;

import mydata.user_list;
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 {
    @Autowired
    private JdbcTemplate jdbcTemplate;
    
    @Override
    public user_list getUser_list(int user_id) {
        String sql = "select * from user_list where user_id=?";
        user_list user_list = jdbcTemplate.queryForObject(sql,new BeanPropertyRowMapper<user_list>(user_list.class),user_id);
        return user_list;
    }
}

BookDaoImpl 实现了BookDao 接口 并重写了其中的 getUser_list方法 这里 我们用的还是上一文中的jdbcTemplate.queryForObject操作数据库 但这次换了一种传参形式 第一个 是 sql语句 这没什么好说的
第二个是 要new一个BeanPropertyRowMapper接口对象 泛型<>中写你对象的名字 然后后面括号中放入你这个方法返回的对象.class
然后 第三个参数 就是sql语句中的可变参数

这里 我们sql就是以user_id作为条件 查询一整条数据回来 然后getUser_list会将查到的结构完整返回出来

然后在src下创建一个包 叫 senvice

然后在下面创建一个类 叫 BookService

参考代码如下

package senvice;

import dao.BookDao;
import mydata.user_list;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class BookService {
    @Autowired
    protected BookDao BookDao;

    public user_list getUser_list (int user_id) {
        return BookDao.getUser_list(user_id);
    }
}

这里 我们重写了一层 调用BookDao中的getUser_list 这是做个结构

为了方便大家后续查看 我们直接将 mydata 包下的user_list 类 的 toString方法重写一下
在这里插入图片描述
这样就会方便大家后续查看他的属性

然后 我们在src下创建一个配置文件 我这里叫 bean.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"
       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">

       <!-- 数据库连接池 -->
       <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
             destroy-method="close">
              <property name="url" value="jdbc:mysql:///test" /><!--对应SQLyog里的数据库-->
              <property name="username" value="root" />            <!-- 用户名 -->
              <property name="password" value="root" />        <!-- 密码 -->
              <property name="driverClassName" value="com.mysql.jdbc.Driver" />
       </bean>

       <!-- JdbcTemplate对象 -->
       <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
              <!--注入dataSource属性-->
              <property name="dataSource" ref="dataSource"></property>
       </bean>

       <context:component-scan base-package="senvice"></context:component-scan>
       <context:component-scan base-package="dao"></context:component-scan>

</beans>

都是些配置过好多次的东西了 这里就不多做解释

然后 我们就来查这第三条数据
在这里插入图片描述

在src下创建测试类 参考代码如下


import mydata.user_list;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import senvice.BookService;

public class text {
    public static void main(String args[]) {
        ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
        BookService bookService = context.getBean("bookService", BookService.class);
        user_list user = bookService.getUser_list(3);
        System.out.println(user);
    }
}

我们 通过读取xml 反射创建BookService对象 调用其中的getUser_list方法 因为 我们要查的第三条数据 user_id是 3 我们是根据 user_id查询的 所以 这里直接传3 去查询

然后 定义一个user_list类型的 叫user 的值来接收方法返回值

运行结果如下
在这里插入图片描述
也是没有任何问题

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值