Spring JDBCTemplate配置使用
2016-05-22 16:06
375 查看
一、开发环境
Windows 10IntelliJ IDEA 2016.1 旗舰版
JDK1.8
二、项目和数据库结构
项目结构:数据库(MySQL 5.5.39):
/* Navicat MySQL Data Transfer Source Server : localhost Source Server Version : 50539 Source Host : localhost:3306 Source Database : ispider_data Target Server Type : MYSQL Target Server Version : 50539 File Encoding : 65001 Date: 2016-04-11 10:11:09 */ SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- Table structure for `myspringjdbcdb` -- ---------------------------- DROP TABLE IF EXISTS `myspringjdbcdb`; CREATE TABLE `myspringjdbcdb` ( `u_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `u_name` varchar(100) NOT NULL, `u_password` varchar(200) NOT NULL, PRIMARY KEY (`u_id`) ) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of myspringjdbcdb -- ---------------------------- INSERT INTO `myspringjdbcdb` VALUES ('7', '张三', 'zhangsan'); INSERT INTO `myspringjdbcdb` VALUES ('8', '李四', 'lisi'); INSERT INTO `myspringjdbcdb` VALUES ('9', '王五', 'wangwu');
三、代码分析
1、配置上mysql的连接驱动注意:需要引入jdbc jar包。
在applicationContext.xml中进行配置(包含了下文的bean配置):
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd"> <beans> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource"> <ref local="dataSource"/> </property> </bean> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName"> <value>com.mysql.jdbc.Driver</value> </property> <property name="url"> <value>jdbc:mysql://localhost:3306/ispider_data</value> </property> <property name="username"> <value>root</value> </property> <property name="password"> <value>xxxxxx</value> </property> </bean> <bean id="userDAO" class="springjdbc.dao.impl.UserDaoImpl"> <property name="jdbcTemplate"> <ref bean="jdbcTemplate"/> </property> </bean> <bean id="user" class="springjdbc.pojo.User"> <property name="dao"> <ref bean="userDAO"/> </property> </bean> </beans>
2、UserDao.java
package springjdbc.dao; import springjdbc.pojo.User; import java.util.List; /** * Created by LTN on 2016/4/8. */ public interface UserDao { List<User> findAllUser(); void create(String id, String name,String password); void execInsert(String sql); }
3、UserDaoImp.java
package springjdbc.dao.impl; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowCallbackHandler; import springjdbc.dao.UserDao; import springjdbc.pojo.User; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; public class UserDaoImpl implements UserDao { private JdbcTemplate jdbcTemplate; public List<User> findAllUser(){ String sql = "select * from myspringjdbcdb"; final List<User> listAllUser = new ArrayList<User>(); jdbcTemplate.query(sql, new RowCallbackHandler() { @Override public void processRow(ResultSet resultSet) throws SQLException { User u=new User(); u.setuName(resultSet.getString("u_name")); u.setuPassword(resultSet.getString("u_password")); u.setuId(resultSet.getString("u_id")); listAllUser.add(u); } }); return listAllUser; } @Override public void create(String id, String name,String password) { String SQL = "insert into myspringjdbcdb (u_id, u_name, u_password) values (?, ?, ?)"; jdbcTemplate.update(SQL, id, name,password); System.out.println("Created Record Id = " + id + " Name = " +name + "Password = " + password); } @Override public void execInsert(String sql) { jdbcTemplate.execute(sql); } public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; } public JdbcTemplate getJdbcTemplate() { return jdbcTemplate; } }
注意在applicationContext.xml中配置userDAOI的 bean。
4、User.java
package springjdbc.pojo; import springjdbc.dao.UserDao; import java.util.List; /** * Created by LTN on 2016/4/8. */ public class User { private String uId; private String uName; private String uPassword; private UserDao dao; public User() { } public void setDao(UserDao dao) { this.dao = dao; } public UserDao getDao() { return dao; } public String getuId() { return uId; } public void setuId(String uId) { this.uId = uId; } public String getuName() { return uName; } public void setuName(String uName) { this.uName = uName; } public String getuPassword() { return uPassword; } public void setuPassword(String uPassword) { this.uPassword = uPassword; } public User(String uName,String uPassword) { this.uName=uName; this.uPassword=uPassword; } public List<User> findAllUser(){ return dao.findAllUser(); } public String toString(){ return "User [dao="+dao+", uId="+uId+", uName"+uName+", uPassword="+uPassword+"]"; } }
注意在applicationContext.xml中配置user的bean。
5、编写测试类TestAction.java
package springjdbc.action; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.xml.XmlBeanFactory; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; import springjdbc.pojo.User; import java.util.List; /** * Created by LTN on 2016/4/11. */ public class TestAction { public static void main(String[] args) { Resource resource = new ClassPathResource("applicationContext.xml"); BeanFactory factory=new XmlBeanFactory(resource); User user = (User) factory.getBean("user"); List<User> list=user.findAllUser(); System.out.println(list); } }
另一个测试类:
package springjdbc.action; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.jdbc.core.JdbcTemplate; import scala.actors.threadpool.Arrays; import springjdbc.dao.UserDao; import springjdbc.dao.impl.UserDaoImpl; import springjdbc.pojo.User; import javax.sql.DataSource; import java.util.List; /** * Created by LTN on 2016/4/11. */ public class MyTest { private DataSource dataSource; private JdbcTemplate jdbcTemplate; public void setDataSource(DataSource ds) { this.dataSource = ds; this.jdbcTemplate = new JdbcTemplate(this.dataSource); } public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext("/conf/datasources.xml"); UserDao userDao=(UserDao)context.getBean("userDAO"); // userDao.create("003","java","psw"); String sql2="insert into myspringjdbcdb (u_id, u_name, u_password) values ('4','smith','pw007')"; userDao.execInsert(sql2); List<User> list=userDao.findAllUser(); System.out.print(list.size()); } }
代码完结。
四、运行后的结果
INFO - Loading XML bean definitions from class path resource [applicationContext.xml] SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/F:/workspace_idea/ISpider/WebContent/WEB-INF/lib/phoenix-4.2.2-client.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/F:/workspace_idea/ISpider/WebContent/WEB-INF/lib/slf4j-log4j12-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. INFO - Loaded JDBC driver: com.mysql.jdbc.Driver [User [dao=null, uId=7, uName张三, uPassword=zhangsan], User [dao=null, uId=8, uName李四, uPassword=lisi], User [dao=null, uId=9, uName王五, uPassword=wangwu]] Process finished with exit code 0
参考资料:
【1】Spring中的JDBCTemplate使用(非常详细的配置过程) http://www.blogjava.net/hyljava/archive/2013/02/22/spring-jdbctemplate.html 【2】baidu: JdbcTemplae使用入门&&Spring三种连接池配置&&Spring配置文件引用外部properties文件 【3】Spring:JdbcTemplate使用指南 http://www.cnblogs.com/chenying99/archive/2012/08/06/2625936.html 【4】Spring源码学习-bean加载 http://www.blogjava.net/yangaiyou/archive/2014/08/29/417486.html[/code]
相关文章推荐
- springMVC(11)------数据列表显示
- java 继承练习题2
- JAVA反射(一)获取Class对象的三种方式及其区别
- 将Android Studio的工程文件导入eclipse出现中文乱码怎么处理
- java 继承练习题1
- xxx.java: Recompile with -Xlint:deprecation for details
- xxx.java: Recompile with -Xlint:deprecation for details
- Java web 监听器
- Spring4.0.6 Websocket详细配置
- 如何将Android Studio的工程导入到eclipse中
- java静态内部类(重点
- Java HashMap的工作原理
- Eclipse上GitHub的安装和上传过程详细示例
- Java 内部类
- xxx.java: Recompile with -Xlint:unchecked for details.
- spring注解注入:<context:component-scan>详解
- xxx.java: Recompile with -Xlint:unchecked for details.
- java封装通解
- java实现MD5加密
- cmd中javac 和 java的用法