赞
踩
查询操作 主要分为 查询出某个值 查询出一个对象 查询出一个集合
之前我们在文章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 的值来接收方法返回值
运行结果如下
也是没有任何问题
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。