当前位置:   article > 正文

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

java 查询mysql数据库 源码 spring

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

之前我们在文章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;
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32

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

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

package dao;

import mydata.user_list;

public interface BookDao {
    user_list getUser_list(int user_id);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

我们定义了一个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;
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

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);
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

这里 我们重写了一层 调用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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

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

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

在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);
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

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

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/576672
推荐阅读
相关标签
  

闽ICP备14008679号