使用spring JdbcTemplate简化jdbc数据库操作实例代码
jopen
11年前
使用spring jdbc template简化jdbc数据库操作实例代码
包括如下几个类:
1. DAO接口
package com.test; import java.util.List; import org.springframework.jdbc.core.JdbcTemplate; public interface DAO { public int getCount(String sql); public String getResultValue(String sql, String column); public List getResult(String sql); public void update(String sql); public void update(String sql,Object[] params); public void delete(String sql); public JdbcTemplate getJt(); }
2. DAO接口实现类 DAOImpl
package com.test; import java.util.List; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.dao.DataAccessException; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.support.rowset.SqlRowSet; public class DAOImpl implements DAO{ protected final Log log = LogFactory.getLog(this.getClass()); private JdbcTemplate jt; public int getCount(String sql) { int count = 0; try { count = jt.queryForInt(sql); } catch (DataAccessException e) { log.info("!!!!!!!!!!!!!!!!!!!Exception:" + e); } return count; } public String getResultValue(String sql, String column) { String value = ""; try { SqlRowSet s = jt.queryForRowSet(sql); while (s.next()){ value = s.getString(column); } } catch (DataAccessException e) { log.info("!!!!!!!!!!!!!!!!!!!Exception:" + e); } return value; } public List getResult(String sql) { List list = null; try { list = jt.queryForList(sql); } catch (DataAccessException e) { log.info("!!!!!!!!!!!!!!!!!!!Exception:" + e); } return list; } public void update(String sql) { try { jt.update(sql); } catch (DataAccessException e) { log.info("!!!!!!!!!!!!!!!!!!!Exception:" + e); } } public void delete(String sql) { try { jt.execute(sql); } catch (DataAccessException e) { log.info("!!!!!!!!!!!!!!!!!!!Exception:" + e); } } @Override public void update(String sql, Object[] params) { // TODO Auto-generated method stub try { jt.update(sql,params); } catch (DataAccessException e) { log.info("!!!!!!!!!!!!!!!!!!!Exception:" + e); } } public void setJt(JdbcTemplate jt) { this.jt = jt; } public JdbcTemplate getJt() { return jt; } }
3. UserManager 接口
package com.test; import java.util.List; import java.util.Map; public interface UserManager { public void addUser(String name); public void updateUser(String name,int id); public void deleteUser(int id); public String getUser(int id); public User getUserByID(int id); public List getUsers(); public List<User> getUserList(); public void init(); }
4. UserManagerImpl:UserManager 接口实现类
package com.test; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import java.util.Map; import org.springframework.jdbc.core.RowMapper; public class UserManagerImpl implements UserManager { private DAO dao; /** * @param args */ public static void main(String[] args) { } public void addUser(String name) { /* String sql="insert into t_test(name) values('"+name+"')"; dao.update(sql); */ String sql="insert into t_test(name) values(?)"; Object[] params = new Object[] {name}; dao.update(sql, params); } public List getUsers() { String sql = "select * FROM t_test"; List<Map> lists = dao.getResult(sql); return lists; } public DAO getDao() { return dao; } public void setDao(DAO dao) { this.dao = dao; } @Override public void init() { // TODO Auto-generated method stub } @Override public void updateUser(String name, int id) { /* String sql="update t_test set name='"+name+"' where id="+id; dao.update(sql); */ /* String sql="update t_test set name=? where id="+id; Object[] params = new Object[] {name}; */ String sql="update t_test set name=? where id=?"; Object[] params = new Object[] {name,new Integer(id)}; dao.update(sql, params); } @Override public void deleteUser(int id) { String sql="delete from t_test where id="+id; dao.delete(sql); } @Override public String getUser(int id) { // TODO Auto-generated method stub String sql="select name from t_test where id="+id; String name=dao.getResultValue(sql, "name"); return name; } @Override public User getUserByID(int id) { User user=null; String sql="select id,name from t_test where id="+id; List<Map> lists = dao.getResult(sql); if (lists.size()>0) { user=new User(); Map map=lists.get(0); user.setId((Integer)map.get("id")); user.setName((String)map.get("name")); } return user; } @Override public List<User> getUserList() { String sql = "select * FROM t_test"; List<Map> lists = dao.getResult(sql); List<User> users=new ArrayList<User>(); if (lists.size()>0) { for(int i=0;i<lists.size();i++) { User user=new User(); Map map=lists.get(i); user.setId((Integer)map.get("id")); user.setName((String)map.get("name")); users.add(user); } } return users; } }
5. User类:实体类
package com.test; public class User { private String name; private int id; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getId() { return id; } public void setId(int id) { this.id = id; } }
6. SpringUtil : 工具类
package com.test; import java.util.List; import java.util.Map; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; /** * spring工具类 * @author * */ public class SpringUtil { /** * @param args */ public static void main(String[] args) { UserManager um= (UserManager)SpringUtil.getBean("userManager"); List<Map> users=um.getUsers(); for(int i=0;i<users.size();i++) { String t_id=users.get(i).get("id").toString(); String t_name=users.get(i).get("name").toString(); System.out.println(t_id+"-"+t_name); } } private static ApplicationContext ctx = new ClassPathXmlApplicationContext( "applicationContext.xml"); public static Object getBean(String beanName) { return ctx.getBean(beanName); } }
7. 测试类: Test
package com.test; import java.util.List; import java.util.Map; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Test { /** * @param args */ public static void main(String[] args) { /* ApplicationContext ctx = new ClassPathXmlApplicationContext("classpath:applicationContext.xml"); UserManager um=(UserManager)ctx.getBean("userManager"); */ UserManager um= (UserManager)SpringUtil.getBean("userManager"); //新增 /* String name="test"; um.addUser(name); */ //列表 List<Map> users=um.getUsers(); for(int i=0;i<users.size();i++) { String t_id=users.get(i).get("id").toString(); String t_name=users.get(i).get("name").toString(); System.out.println(t_id+"-"+t_name); } //修改 //um.updateUser("test6", 6); //删除 //um.deleteUser(1); //获取某个字段 //String name2=um.getUser(2); //System.out.println(name2+"-"+name2); // 获取对象列表 List<User> users2=um.getUserList(); for(int i=0;i<users2.size();i++) { int t_id2=users2.get(i).getId(); String t_name2=users2.get(i).getName(); System.out.println(t_id2+"-"+t_name2); } //获取对象 User u=um.getUserByID(2); System.out.println(u.getId()+"-"+u.getName()); } }
8. Spring 配置文件:applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <!-- DB --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName"> <value>com.mysql.jdbc.Driver</value> </property> <property name="url"> <value>jdbc:mysql://127.0.0.1/myweb?useUnicode=true&characterEncoding=gbk</value> </property> <property name="username"> <value>root</value> </property> <property name="password"> <value>root</value> </property> </bean> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate" abstract="false" lazy-init="false" autowire="default" dependency-check="default"> <property name="dataSource"> <ref bean="dataSource" /> </property> </bean> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource"> <ref bean="dataSource" /> </property> </bean> <bean id="springDAOProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"> <property name="proxyInterfaces"> <list> <value>com.test.DAO</value> </list> </property> <property name="target"> <ref bean="DAO"/> </property> <property name="transactionManager"> <ref bean="transactionManager"/> </property> <property name="transactionAttributes"> <props> <prop key="insert*">PROPAGATION_REQUIRED</prop> <prop key="update*">PROPAGATION_REQUIRED</prop> <prop key="delete*">PROPAGATION_REQUIRED</prop> </props> </property> </bean> <bean id="DAO" class="com.test.DAOImpl"> <property name="jt"> <ref bean="jdbcTemplate" /> </property> </bean> <bean name="userManager" class="com.test.UserManagerImpl" init-method="init"> <property name="dao"> <ref bean="DAO" /> </property> </bean> </beans>
9. web环境下调用:
web.xml配置:
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/classes/applicationContext.xml</param-value> </context-param> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
测试jsp文件:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ page import="org.springframework.web.context.WebApplicationContext"%> <%@ page import="com.test.*"%> <%@ page import="org.springframework.web.context.support.WebApplicationContextUtils"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <% WebApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(this.getServletContext()); UserManager um = (UserManager) ctx.getBean("userManager"); %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>spring jdbc test</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <br> <% List<User> users2=um.getUserList(); for(int i=0;i<users2.size();i++) { int t_id2=users2.get(i).getId(); String t_name2=users2.get(i).getName(); %> <%=t_id2 %>-<%=t_name2 %> <br> <% System.out.println(t_id2+"-"+t_name2); } %> </body> </html>