博客概要
本博文,简单使用spring框架,实现对于学生表的全查操作,重点在于归纳整理springpath.xml配置文件的配置步骤。
文章目录
spring实现全查步骤
1.创建项目
点击创建普通web项目,并进行相关文件路径的选择。
![](https://i-blog.csdnimg.cn/blog_migrate/bbd6428e0597befd904e9a685fdb3422.jpeg)
2.创建代码目录结构
1.bean——实体层
2.dao——数据持久层
3.service——服务层
4.test——白盒测试
5.springpath.xml——spring配置文件
6.web目录——放置jsp前台页面、lib架包
![](https://i-blog.csdnimg.cn/blog_migrate/2070c36de7b28e88d466be89a5620d6f.jpeg)
**3.配置springpath.xml文件
spring框架的一大作用就是,将之前的new对象的操作,放在了springpath.xml这个配置文件中自动处理,省了事。
xml文件中的每一个元素都是bean,spring配置文件的配置分为5大步:
1.注解扫描
扫描spring包中的注解,由注解生成dao和service
2.创建dao对象
可以在任何加载springpath.xml的地方使用
3.创建service对象
可以在任何加载springpath.xml的地方使用
4.配置数据源
提供数据库连接,包括数据库驱动的注册,数据库地址的获取,以及数据库用户名、密码的获取
5.创建JdbcTemplate对象
自动注入dataSource对象
具体代码:
<?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">
<!-- xml每个元素都是bean(豆子)->beans(豆腐块),xml是将之前的new对象,放在配置文件中自动处理 -->
<!-- 1.注解扫描:扫描spring包中的注解(由注解生成dao层和service层),连接xml和dao -->
<context:component-scan base-package="com.itwanli" />
<!-- 2.创建dao层对象(可以在任何加载springpath.xml的地方使用),搞出来bean -->
<bean id="studentDao" class="com.wcw.controller.dao.impl.StudentDaoImpl" />
<!-- 3.创建service层对象(可以在任何加载springpath.xml的地方使用) -->
<bean id="studentService" class="com.wcw.controller.service.impl.StudentServiceImpl" />
<!-- 4.配置数据源,提供数据库连接:data数据源,目的是为了连接数据库,class——来自、地址 -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<!-- 驱动 -->
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<!-- 数据库地址,&——相当于取地址符 -->
<property name="url" value="jdbc:mysql://127.0.0.1:3306/db_java1ssm?useSSL=true&characterEncoding=utf8" />
<!-- 数据库用户名 -->
<property name="username" value="root" />
<!-- 数据库密码 -->
<property name="password" value="123456" />
</bean>
<!-- 5.创建JdbcTemplate对象,自动注入dataSource对象-->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource" />
</bean>
</beans>
4.编撰主体代码
4.1Bean
创建Student实体类
具体代码:
package spring.itwanli.bean;
public class Student {
private int sid;
private String sname;
private String sage;
@Override
public String toString() {
return "Student{" +
"sid=" + sid +
", sname='" + sname + '\'' +
", sage=" + sage +
'}';
}
public Student() {
}
public Student(int sid, String sname, String sage) {
this.sid = sid;
this.sname = sname;
this.sage = sage;
}
public Student(String sname, String sage) {
this.sname = sname;
this.sage = sage;
}
public int getSid() {
return sid;
}
public void setSid(int sid) {
this.sid = sid;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public String getSage() {
return sage;
}
public void setSage(String sage) {
this.sage = sage;
}
}
4.2Dao+DaoImpl
创建Student数据持久层以及其实现层
具体代码:
//dao
/**
* 全查
* @return
*/
List<Student> findAll();
//impl
/**
* 自动注入
* 创建JdbcTemplate对象
* 设置set函数
*/
@Autowired
private JdbcTemplate jdbcTemplate;
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
/**
*全查
* 反射机制和泛型
* (javase高级 DOM4J)
*/
@Override
public List<Student> findAll() {
String sql = "select * from tb_student";
/**
* 反射机制
* 反射spring的对象
* Student.class -- 类加载器
*/
BeanPropertyRowMapper<Student> selAll = new BeanPropertyRowMapper<>(Student.class);//反射机制
//query -- 多个对象
List<Student> stus = jdbcTemplate.query(sql, selAll);
return stus;
}
4.3Service+ServiceImpl
创建Student服务层以及其实现层
具体代码:
//service
/**
* 全查
* @return
*/
List<Student> findAll();
//impl
/**
* 面向切面编程:切面(接口)
* @Autowired:自动注入
*/
@Autowired
private StudentDao studentDao;
public void setStudentDao(StudentDao studentDao) {
this.studentDao = studentDao;
}
/**
* 全查
* @return
*/
@Override
public List<Student> findAll() {
return this.studentDao.findAll();
}
5.白盒测试
使用JUnit4
具体代码
/**
* main在不起作用,此处用JUnit
* @Before:代表做操作之前的准备工作
* */
//1.加载配置文件xml
private ApplicationContext ac;
@Before
public void into(){
ac = new ClassPathXmlApplicationContext("springpath.xml");
}
/**
* 全查
*/
@Test
public void TestByAll(){
StudentService ss =(StudentService) ac.getBean("studentService");
List<Student> stus = ss.findAll();
for (Student stu:stus){
if (stu!=null){
System.out.println(stu);
}
}
}
运行结果
![](https://i-blog.csdnimg.cn/blog_migrate/056440b9f21e5d586d4cee40d22d7f18.jpeg)