欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
使用Spring JDBC包裝基本的CRUD操作

使用Spring JDBC包裝基本的CRUD操作

想起來(lái)Spring的JDBC還不錯,就拿起來(lái)研究了一下,順便也寫(xiě)了個(gè)小例子,希望對初學(xué)者有點(diǎn)用處

主要注意以下幾點(diǎn):
1. 對于一些特定的小項目中,很多的工作量都在增刪改上,而這些代碼當然是驚人地相似,所以對5個(gè)簡(jiǎn)單的
方法抽象了一下,以達到共用的目的
2. 主要文件:applicationContext.xml, BaseDAO.java, BaseDAOImp.java, DAORowMapper.java
3. 在BaseDAOImp.java里有一個(gè)Main方法可以做測試
4. DB中只要一個(gè)表,表名:users, 三個(gè)列:id(int,主鍵),name(varchar), email(varchar)

這只是一個(gè)初稿,后面再做修改再與大家分享

applicationContext.xml

代碼




  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">  
  3.   
  4. <beans>  
  5.     <bean id="userDAO" class="com.xxxxx.dao.BaseDAOImp" singleton="false">  
  6.         <property name="jdbcTemplate">  
  7.             <ref bean="jdbcTemplate" />  
  8.         </property>  
  9.         <property name="tableName" value="users"></property>  
  10.         <property name="objectClass" value="com.xxxxx.admin.vo.UserVO"></property>  
  11.         <property name="keyColumn" value="id"></property>  
  12.     </bean>  
  13.   
  14.     <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">  
  15.         <constructor-arg>  
  16.             <ref bean="datasource" />  
  17.         </constructor-arg>  
  18.     </bean>  
  19.     <bean id="datasource"    
  20.   
  21. class="org.springframework.jdbc.datasource.DriverManagerDataSource">  
  22.         <property name="driverClassName"    
  23. value="com.microsoft.sqlserver.jdbc.SQLServerDriver" />  
  24.         <property name="url" value="jdbc:sqlserver://localhost;databaseName=testdb" />  
  25.         <property name="username" value="sa" />  
  26.         <property name="password" value="admin" />  
  27.     </bean>  
  28. </beans>  




BaseDAO.java


代碼




  1. package com.xxxxx.dao;   
  2.   
  3. import java.util.List;   
  4.   
  5. public interface BaseDAO {   
  6.     public int insert(Object obj);   
  7.     public int update(Object obj);   
  8.     public int delete(Object id);   
  9.     public Object findByID(Object id);   
  10.     public List findAll();   
  11. }   





BaseDAOImp.java

代碼




  1. package com.xxxxx.dao;   
  2.   
  3. import java.util.List;   
  4.   
  5. import org.springframework***ans.factory.xml.XmlBeanFactory;   
  6. import org.springframework.core.io.ClassPathResource;   
  7. import org.springframework.jdbc.core.JdbcTemplate;   
  8.   
  9. import com.xxxxx.admin.vo.UserVO;   
  10. import com.xxxxx.common.utils.SQLUtils;   
  11.   
  12. public class BaseDAOImp implements BaseDAO {   
  13.     private JdbcTemplate jdbcTemplate;   
  14.     private String tableName;   
  15.     private Class objectClass;   
  16.     private String keyColumn;   
  17.        
  18.     public void setKeyColumn(String keyColumn) {   
  19.         this.keyColumn = keyColumn;   
  20.     }   
  21.   
  22.     public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {   
  23.         this.jdbcTemplate = jdbcTemplate;   
  24.     }   
  25.   
  26.     public void setObjectClass(Class objectClass) {   
  27.         this.objectClass = objectClass;   
  28.     }   
  29.   
  30.     public void setTableName(String tableName) {   
  31.         this.tableName = tableName;   
  32.     }   
  33.   
  34.     public int delete(Object id) {   
  35.         String sql = "delete from " + tableName + " where "+keyColumn+"=?";   
  36.         return jdbcTemplate.update(sql, new Object[]{id});   
  37.     }   
  38.   
  39.     public List findAll() {   
  40.         String sql = "select * from " + tableName;   
  41.         return jdbcTemplate.query(sql, new DAORowMapper(objectClass));   
  42.     }   
  43.   
  44.     public Object findByID(Object id) {   
  45.         String sql = "select * from " + tableName + " where " + keyColumn + "=?";   
  46.         return jdbcTemplate.queryForObject(sql, new Object[]{id}, new DAORowMapper   
  47.   
  48. (objectClass));   
  49.     }   
  50.   
  51.     /*  
  52.      * 這里用的Database的主鍵自增策略,如果想自己實(shí)現可以去看看Hibernate的主鍵生成方法  
  53.      * 其實(shí)簡(jiǎn)單一點(diǎn)可以在server起來(lái)的時(shí)候定義一個(gè)存放主鍵的Map,然后讓這些主鍵值遞增就可以了  

  54. ,  
  55.      * 只是要注意一下并發(fā)問(wèn)題  
  56.      */  
  57.     public int insert(Object obj) {   
  58.         Object[] sqlAndParams = SQLUtils.generateInsert(obj, tableName);   
  59.         return jdbcTemplate.update((String)sqlAndParams[0], (Object[])sqlAndParams[1]);   
  60.     }   
  61.   
  62.     public int update(Object obj) {   
  63.         Object[] sqlAndParams = SQLUtils.generateUpdate(obj, tableName, keyColumn);   
  64.         return jdbcTemplate.update((String)sqlAndParams[0], (Object[])sqlAndParams[1]);   
  65.     }   
  66.            
  67.     public static void main(String[] args){   
  68.         // init factory:   
  69.         XmlBeanFactory factory = new XmlBeanFactory(new ClassPathResource   
  70.   
  71. ("applicationContext.xml"));   
  72.   
  73.         BaseDAO userDAO = (BaseDAO)factory.getBean("userDAO");   
  74.         // find all   
  75.         List list = userDAO.findAll();   
  76.         System.out.println("user count: "+list.size());   
  77.         // find by id   
  78.         UserVO userVO = (UserVO)userDAO.findByID(new Integer(2));   
  79.         System.out.println("Ginger‘s Email: "+userVO.getEmail());   
  80.         // insert   
  81.         userVO = new UserVO();   
  82.         userVO.setName("tester1");   
  83.         userVO.setEmail("tester@gmail.com");   
  84.         Object insertResult = userDAO.insert(userVO);   
  85.         System.out.println("insert returned: "+insertResult);   
  86.         //update   
  87.         userVO = new UserVO();   
  88.         userVO.setId(new Integer(3));   
  89.         userVO.setName("tester33");   
  90.         userVO.setEmail("tester33@gmail.com");   
  91.         Object updateResult = userDAO.update(userVO);   
  92.         System.out.println("update returned: "+updateResult);   
  93.         //delete   
  94.         Object deleteResult = userDAO.delete(new Integer(4));   
  95.         System.out.println("delete returned: "+deleteResult);   
  96.     }   
  97. }   





DAORowMapper.java

代碼


  1. package com.xxxxx.dao;   
  2.   
  3. import java.sql.ResultSet;   
  4. import java.sql.SQLException;   
  5.   
  6. import org.springframework.jdbc.core.RowMapper;   
  7. import org.springframework.jdbc.support.rowset.ResultSetWrappingSqlRowSetMetaData;   
  8.   
  9. import com.xxxxx.common.utils.ReflectionUtils;   
  10.   
  11. public class DAORowMapper implements RowMapper {   
  12.     private Class rowObjectClass;   
  13.        
  14.     public DAORowMapper(Class rowObjectClass){   
  15.         this.rowObjectClass = rowObjectClass;   
  16.     }   
  17.        
  18.     public Object mapRow(ResultSet rs, int index) throws SQLException {   
  19.         Object object;   
  20.         try {   
  21.             object = rowObjectClass.newInstance();   
  22.         } catch (Exception e) {   
  23.             throw new RuntimeException(e);   
  24.         }   
  25.            
  26.         ResultSetWrappingSqlRowSetMetaData wapping = new    
  27.   
  28. ResultSetWrappingSqlRowSetMetaData(rs.getMetaData());   
  29.         for(int i=1;i<=wapping.getColumnCount();i++){   
  30.             String name = wapping.getColumnName(i);   
  31.             Object value = rs.getObject(i);   
  32.             ReflectionUtils.setFieldVlaue(object, name, value);   
  33.         }   
  34.   
  35.         return object;   
  36.     }   
  37.   
  38. }

 

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Spring:JdbcTemplate使用指南
Spring3核心技術(shù)之JdbcTemplate
Spring的JNDI數據源連接池配置示例及Spring對JNDI實(shí)現分析
Spring DAO支持
JdbcTemplate學(xué)習筆記
使用spring的動(dòng)態(tài)路由實(shí)現數據庫讀寫(xiě)分離【數據庫讀寫(xiě)分離(二) 】
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久