0x00 教程内容
Spring配置文件的编写
JDBCTemplate访问接口代码的实现
测试
增删改完整代码
紧接着上一篇教程的基础:Spring之Bean的依赖注入(基于XML),这一篇文章继续来操作对数据库的访问,只不过这次是使用Spring里面的JdbcTemplate,其实也是非常简单的。
0x01 Spring配置文件的编写
1. 引入依赖
如果上一教程已经引入过了,则忽略此步骤:
<!-- Spring JDBC依赖包 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>5.2.4.RELEASE</version> </dependency> <!-- Spring context依赖 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.2.4.RELEASE</version> </dependency>
2. 注入dataSource
注入 dataSource
和 jdbcTemplate
:
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql:///sny"/> <property name="username" value="root"/> <property name="password" value="123456"/> </bean>
如果不知道需要设置什么property,可以按住 ctrl
然后点击 DriverManagerDataSource
进入需要设置什么属性值。
0x02 新建JDBCTemplate访问接口
1. 新建实现类
新建类 StudentDAOJdbcTemplateImpl
实现 StudentDAO
接口,然后加入JDBCTemplate属性,并且生成 get 和 set 方法 (至少需要有 set 方法):
private JdbcTemplate jdbcTemplate; public JdbcTemplate getJdbcTemplate() { return jdbcTemplate; } public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; }
2. 注入 jdbcTemplate
写好之后,需要在Spring配置文件里注入进来,以供后面测试时直接从IoC容器中获取:
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="dataSource"/> </bean>
注意:这里是用了 ref ,表示设置的属性值来自于上面注入的bean,对应的是id。
3. 编写jdbcTemplate访问代码
编写实现StudentDAO里面的查询接口的代码:
@Override public List<Student> getStudentList() { final List<Student> studentList = new ArrayList<>(); String sql = "select id,name,age from student"; jdbcTemplate.query(sql, new RowCallbackHandler() { @Override public void processRow(ResultSet resultSet) throws SQLException { Student student = new Student(); student.setId(resultSet.getInt("id")); student.setName(resultSet.getString("name")); student.setAge(resultSet.getInt("age")); studentList.add(student); } }); return studentList; }
4. 注入接口实现类
<bean id="studentDAO" class="com.shaonaiyi.dao.StudentDAOJdbcTemplateImpl">
<property name="jdbcTemplate" ref="jdbcTemplate"/>
</bean>
注意:这里是用了 ref ,对应的是上面配置的 jdbcTemplate。
0x03 测试
1. 新建测试类
完整代码如下:
package com.shaonaiyi.dao; import com.shaonaiyi.domain.Student; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import java.util.List; /** * @Auther: shaonaiyi@163.com * @Date: 2021/1/16 15:43 * @Description: JDBCTemplate方式对数据库进行访问 */ public class StudentDAOJdbcTemplateImplTest { private ApplicationContext applicationContext = null; private StudentDAO studentDAO = null; @Before public void before() { applicationContext = new ClassPathXmlApplicationContext("spring.xml"); studentDAO = (StudentDAO) applicationContext.getBean("studentDAO"); } @After public void after() { applicationContext = null; } @Test public void testGetStudentList() { List<Student> studentList = studentDAO.getStudentList(); for (Student student : studentList) { System.out.println("---------------------"); System.out.println("学生id:" + student.getId()); System.out.println("学生名称:" + student.getName()); System.out.println("学生年龄:" + student.getAge()); } } }
代码解读:从IoC容器中获取 studentDAO对象,然后调用查询接口,将结果查询出来。