我们之前说过,查询操作 分为三种大类型返回
返回某个值 在 java Spring JdbcTemplate配合mysql查询一个表中具体有几条数据中讲过
返回一个对象 在 java Spring JdbcTemplate配合mysql将表中的一条记录查询成一个类的数据对象
中有讲过
那么 本文 将要将第三种 查询返回一个集合
查询集合则更加常见 基本只能系统都需要渲染列表 就是通过集合实现
首先 准备工作 一个 test数据库 下面放一个 user_list表 参考数据如下图
首先 创建一个java项目 引入所需要的依赖
然后 在src目录下创建一个包 叫 mydata
在 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;
}
public String toString(){
return "user_id="+this.getUser_id()+
" user_name="+this.getUser_name()+
" user_post="+this.getUser_post();
}
}
可以看出 我们user_list类 从类名 属性名 属性类型 都是和 user_list 数据库表一一对应的 这就是 user_list要用的属性类
然后 在src下创建目录 dao
在 dao下创建一个接口 叫 BookDao
参考代码如下
package dao;
import mydata.user_list;
import java.util.List;
public interface BookDao {
List<user_list> getUser_listmin();
}
这里 我们声明了一个getUser_listmin方法 不需要参数 返回一个 泛型为user_list类对象的list集合
接口都写了 自然要有类来实现
在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;
import java.util.List;
@Repository
public class BookDaoImpl implements BookDao {
@Autowired
private JdbcTemplate jdbcTemplate;
@Override
public List<user_list> getUser_listmin() {
String sql = "select * from user_list";
List<user_list> userlilst = jdbcTemplate.query(sql,new BeanPropertyRowMapper<user_list>(user_list.class));
return userlilst;
}
}
这里 我们调用的是 jdbcTemplate.query方法 他和queryForObject接受的参数是一样的 第一个参数是一个字符串类型的sql语句
第二个参数是 BeanPropertyRowMapper new的一个返回类型对象 第三个是可变参数 sql中用了多少个问号 则要传多少个参数 当做尾号的参数 但这里 我们的sql语句没有任何条件 不需要任何外界参数 就直接不传第三个参了
然后会返回一个 List<user_list>类型的值回来
然后 在src下创建目录 叫 senvice
参考代码如下
package senvice;
import dao.BookDao;
import mydata.user_list;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class BookService {
@Autowired
protected BookDao BookDao;
public List<user_list> findUser () {
return BookDao.getUser_listmin();
}
}
这里暂时只是搭个三级架构 调用了一层 然后返回一下
然后 我们在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>
我们 jdbc:mysql:///test 就是指向了 test
用户名 密码 username password
然后 我们在src下编写一个测试类 参考代码如下
import mydata.user_list;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import senvice.BookService;
import java.util.List;
public class text {
public static void main(String args[]) {
ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
BookService bookService = context.getBean("bookService", BookService.class);
List<user_list> userList = bookService.findUser();
for (int i = 0; i < userList.size(); i++) {
System.out.println(userList.get(i));
}
}
}
我们通过反射 获取BookService对象 然后通过findUser一直往下调 最后触发到jdbcTemplate.query 调用数据库 查询出整个user_list表的数据 返回成一个 user_list类实体的数据集合
我们通过for循环遍历了得到的集合
运行结果如下