本文主要是介绍[Spring实战系列] - No.4 Spring JDBC示例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在今天这篇文章中,我们将会讲解如何用Spring 来实现最简单的jdbc操作数据库。
1.配置数据源:
我们对数据库进行操作的第一件事就是配置我们的数据源(新建数据库除外)。Spring提供了多个进行数据源配置的
方法。例如:
a.使用JDNI数据源
b.使用数据源连接池
c.基于JDBC驱动的数据源
在这里,我们只研究JDBC驱动的数据源配置。
Spring的第一件事还是要配置我们的db.xml文件。新建Spring config文件(不会的朋友可以查看前几篇文章)
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"><property name="driverClassName" value="com.mysql.jdbc.Driver"></property><property name="url" value=" jdbc:mysql://localhost:3306/spring?useSSL=false"></property><property name="username" value="root"></property><property name="password" value="root"></property></bean>
接下来,我们就要开始编写我们的数据库操作部分以及类实体。
在项目内新建User类:
/*** Created by YanMing on 2017/2/22.*/
public class User {private String name;private int age;public User(){}public User(String name,int age){this.name = name;this.age = age;}public void setName(String name){this.name = name;}public String getName(){return this.name;}public void setAge(int age){this.age = age;}public int getAge(){return this.age;}
}
接下来,我们要在Spring中使用我们的JDBC。这里,我们需要使用到JDBC模板。新建DAO类:
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;/*** Created by YanMing on 2017/2/22.*/
public class JdbcDao{private JdbcTemplate jdbcTemplate;private static final String GETNAME_query = "select * from user where name = ?";private static final String GETAGE_query = "select * from user where age = ?";public JdbcDao(){}public void setJdbcTemplate(JdbcTemplate jdbcTemplate){this.jdbcTemplate = jdbcTemplate;}public User selectUserByName(String name){User user = (User) jdbcTemplate.queryForObject(GETNAME_query, new RowMapper(){@Overridepublic Object mapRow(ResultSet resultSet,int index) throws SQLException{User user1 = new User();user1.setName(resultSet.getString(1));user1.setAge(resultSet.getInt(2));return user1;}},name);return user;}public List<User> selectUserByAge(int age){return this.jdbcTemplate.query(GETAGE_query, new RowMapper<User>() {@Overridepublic User mapRow(ResultSet resultSet, int i) throws SQLException {User user = new User();user.setName(resultSet.getString(1));user.setAge(resultSet.getInt(2));return user;}},age);}
}
JDBC模板使用起来其实很简单。在我们的DAO内的内部,声明一个jdbcTemplate对象。对比我们之前使用java
连接数据库的方式,是不是发现有什么不同?对了!我们就是使用jdbctemplate来每次进行数据库的链接。那我们在
哪里配置的jdbctemplate?还是db.xml
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"><property name="dataSource" ref="dataSource"></property></bean><bean id="jdbcdao" class="JdbcDao"><property name="jdbcTemplate" ref="jdbcTemplate"></property></bean>
让我们来看一下,我们具体是怎么实现数据库操作的。请看selectUserByName函数:
public User selectUserByName(String name){User user = (User) jdbcTemplate.queryForObject(GETNAME_query, new RowMapper(){@Overridepublic Object mapRow(ResultSet resultSet,int index) throws SQLException{User user1 = new User();user1.setName(resultSet.getString(1));user1.setAge(resultSet.getInt(2));return user1;}},name);return user;}
这里,我们使用jdbcTemplate进行query操作。jdbc.queryXXX()这个api,拥有很多格式,我们这里使用的是其中
一种,有兴趣的朋友可以百度一下。
编写测试用例测试:
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.stereotype.Repository;import java.util.List;import static org.junit.Assert.*;/*** Created by YanMing on 2017/2/22.*/public class JdbcDaoTest {@Testpublic void test(){ApplicationContext context = new ClassPathXmlApplicationContext("db.xml");JdbcDao jdbcDao = (JdbcDao) context.getBean("jdbcdao");User user = jdbcDao.selectUserByName("yanming");System.out.println(user.getName() + " " + user.getAge());List<User> list = jdbcDao.selectUserByAge(21);for (User user1:list){System.out.println(user1.getName()+" "+user1.getAge());}}
}
运行结果:
下一篇文章开始,我们将开始学习SpringMVC部分的知识!
本文Github源码下载
这篇关于[Spring实战系列] - No.4 Spring JDBC示例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!