5.1 »ùÓÚ·ºÐ͵ÄͨÓà DAO½Ó¿ÚÉè¼Æ ÊÓ Æµ ½² ½â ÔÚʵ¼ÊµÄϵͳҵÎñÖУ¬ÓкܶàÒµÎñÂß¼­¶¼ÊÇͨ¹ý¶ÔÊý¾Ý¿â±íµÄÔö¡¢É¾¡¢¸Ä¡¢²éµÈ²Ù×÷À´ÊµÏֵģ¬ÀýÈ翼Éú×¢²áÐÂÓû§Ê±ÐèÒªÔÚÊý¾Ý¿â±ístudentÖвåÈëÒ»Ìõ¼Ç¼£¬¹ÜÀíÔ±µÇ¼ϵͳʱÐèÒª²éѯÊý¾Ý¿â±í adminÖеļǼ£¬¿¼ÉúÓû§Ð޸ı¨¿¼ÐÅϢʱÐèÒª¸üÐÂÊý¾Ý¿â±í enrollÖеļǼ¡£ DAO½Ó¿Ú×÷ΪÖмä²ã£¬ÒªÄܹ»ÌṩһЩÊÊÓÃÓÚ²Ù×÷²»Í¬Êý¾Ý¿â±íµÄͨÓ÷½·¨£¬´Ó¶ø¼ò»¯ÉϲãÒµÎñÂß¼­´úÂëµÄ±àд¡£»ùÓÚ·ºÐͼ¼ÊõÀ´Éè¼ÆDAO½Ó¿ÚÎÞÒÉÊÇÒ»¸öºÜºÃµÄÑ¡Ôñ¡£ÏÂÃæÎÒÃǽ«»ùÓÚ·ºÐͼ¼ÊõÉè¼ÆÒ»¸öͨÓõÄDAO½Ó¿Ú£¬²¢ÔÚÕâ¸öͨÓÃDAO½Ó¿ÚÖÐÌṩ±È½ÏÈ«ÃæµÄÓÃÓÚ²Ù×÷Êý¾Ý¿âµÄ»ù±¾·½·¨¡£ Ê×ÏÈÔÚ srcĿ¼Ï´´½¨ java°ü¡° cn.bmxt.dao.common¡±£¬È»ºóÔڸðüÖд´½¨Ò»¸ö½Ó¿Ú BaseDao£¬BaseDaoµÄÉè¼Æ´úÂëÈç5.1-01Ëùʾ¡£ ¡¾´úÂë5.1-01¡¿Îļþ/src/cn.bmxt.dao.common/BaseDao.java£¬°æ±¾0.01¡£ 01 package cn.bmxt.dao.common; 02 import cn.bmxt.entity.common.Entity; 03 import java.util.List; 04 import java.util.Map; 05 public interface BaseDao { 06 public T .ndOneById(long id); 07 public T .ndOneByField(String .eldName, Object .eldValue); 08 public T .ndOneBySql(String sql, Object... sqlParas); 09 public Map .ndMapBySql(String sql, Object... sqlParas); 10 public List .ndAll(); 11 public List .ndAllByField(String .eldName, Object .eldValue); 12 public List .ndAllBySql(String sql, Object... sqlParas); 13 public List> .ndMapListBySql(String sql, Object... sqlParams); 14 public int save(T entity); 15 public int save(Map entityFieldMap); 16 public int deleteById(long id); 17 public int deleteByField(String .eldName, Object .eldValue); 18 public int deleteBySql(String sql, Object... sqlParas); 19 public int updateById(long id, Map entityFieldMap); 20 public int updateByField(String .eldName, Object .eldValue); 21 public int updateBySql(String sql, Object... sqlParas); 22 public long count(); 23 public long count(String sql, Object... sqlParas); 24 } ´úÂë5.1-01˵Ã÷ÈçÏ£º £¨1£©µÚ05ÐУ¬BaseDao½Ó¿ÚµÄÉùÃ÷ÐУ¬ÆäÖж¨ÒåµÄ·ºÐÍT´ú±íµÄÊÇEntityÀàµÄ×ÓÀàÐÍ£¬ EntityÀàµÄ×ÓÀàÐ;ÍÊÇ4.2½ÚÖж¨ÒåµÄ10¸öʵÌåÀà¡£ £¨2£©µÚ06ÐÐ~µÚ08ÐУ¬¶¨ÒåÁË3¸ö³£ÓõIJéѯʵÌåµÄ·½·¨¡£µÚ06ÐÐÖж¨ÒåµÄfindOneById·½·¨Í¨¹ý¸ø¶¨µÄidÖµ²éѯµÃµ½Ò»¸öʵÌå¡£µÚ07ÐÐÖж¨ÒåµÄfindOneByField·½·¨Í¨¹ý¸ø¶¨µÄ×Ö¶ÎÃû³ÆºÍ×Ö¶ÎÖµ²éѯµÃµ½Ò»¸öʵÌå¡£µÚ08ÐÐÖж¨ÒåµÄfindOneBySql·½·¨Í¨¹ý¸ø¶¨Ò»¸öÔ¤±àÒëSQLÓï¾ä¼°Æä²ÎÊýÊý×é²éѯµÃµ½Ò»¸öʵÌå¡£ £¨3£©µÚ09ÐУ¬¶¨ÒåÁËfindMapBySql·½·¨£¬Í¨¹ý¸ø¶¨Ò»¸öÔ¤±àÒëSQLÓï¾ä¼°Æä²ÎÊýÊý×é²éѯһÌõ¼Ç¼£¬½«½á¹û¼Ç¼ת»»ÎªMapÀàÐ͵ÄÊý¾Ýºó·µ»Ø¡£ £¨4£©µÚ10ÐÐ~µÚ12ÐУ¬¶¨ÒåÁË 3¸ö³£ÓõIJéѯʵÌ弯ºÏµÄ·½·¨¡£µÚ 10ÐÐÖж¨ÒåµÄ findAll·½·¨ÓÃÓÚ²éѯһ¸ö±íÖеÄËùÓмǼ£¬²¢·âװΪÓëÖ®¶ÔÓ¦µÄʵÌ弯ºÏ¡£µÚ 11ÐÐÖж¨ÒåµÄ .ndAllByField·½·¨Í¨¹ý¸ø¶¨µÄ×Ö¶ÎÃû³ÆºÍ×Ö¶ÎÖµ²éѯµÃµ½Ò»¸öʵÌåÁÐ±í¼¯ºÏ¡£µÚ 12ÐÐÖж¨ÒåµÄ .ndAllBySql·½·¨Ôòͨ¹ý¸ø¶¨Ò»¸öÔ¤±àÒëSQLÓï¾ä¼°Æä²ÎÊýÊý×é²éѯµÃµ½Ò»¸öʵÌåÁÐ±í¼¯ºÏ¡£ £¨5£©µÚ13ÐУ¬¶¨ÒåÁËfindMapListBySql·½·¨¡£Í¨¹ý¸ø¶¨Ò»¸öÔ¤±àÒëSQLÓï¾ä¼°Æä²ÎÊýÊý×é²éѯ¶àÌõ¼Ç¼£¬½«ÆäÖеļǼת»»ÎªMapÀàÐ͵ÄÊý¾Ý£¬È»ºóÔÙ½«ÕâЩMapÀàÐ͵ÄÊý¾Ý×éÖ¯ÔÚÒ»¸öÁÐ±í¼¯ºÏÖзµ»Ø¡£ £¨6£©µÚ14ÐÐ~µÚ15ÐУ¬¶¨ÒåÁËÖØÔØµÄÁ½¸ösave·½·¨£¬ÓÃÓÚÔÚÊý¾Ý¿â±íÖб£´æÒ»Ìõ¼Ç¼£¬·½·¨Èë²Î¿ÉÒÔÊÇÒ»¸öʵÌåÀ࣬Ҳ¿ÉÒÔÊÇÒ»¸öMapÀàÐ͵ÄÊý¾Ý¡£ £¨7£©µÚ16ÐÐ~µÚ18ÐУ¬¶¨ÒåÁË3¸ö³£ÓõÄɾ³ý¼Ç¼µÄ·½·¨¡£µÚ16ÐÐÖж¨ÒåµÄdeleteById·½·¨É¾³ýij¸öidÖµ¶ÔÓ¦µÄ¼Ç¼¡£µÚ17ÐÐÖж¨ÒåµÄdeleteByField·½·¨ÓÃÓÚɾ³ýij¸ö×ֶΣ¨fieldName£©µÈÓÚij¸öÖµ£¨fieldValue£©µÄËùÓмǼ¡£µÚ18ÐÐÖж¨ÒåµÄdeleteBySql·½·¨Ôòͨ¹ý¸ø¶¨Ò»¸öÔ¤±àÒëSQLÓï¾ä¼°Æä²ÎÊýÊý×éÀ´Ö´ÐÐɾ³ý²Ù×÷¡£ £¨8£©µÚ 19ÐÐ~µÚ21ÐУ¬¶¨ÒåÁË 3¸ö³£ÓõĸüÐÂÊý¾ÝµÄ·½·¨¡£µÚ 19ÐÐÖж¨ÒåµÄ updateById·½·¨ÓÃÓÚ¸üÐÂij¸öidÖµ¶ÔÓ¦µÄ¼Ç¼£¬¼Ç¼ÖÐÐèÒª¸üеÄ×ֶκÍÖµÔòͨ¹ýÒ»¸öMapÀàÐ͵ÄÊý¾ÝÌṩ¡£µÚ20ÐÐÖж¨ÒåµÄupdateByField·½·¨ÓÃÓÚ¶ÔÒ»¸ö×ֶΣ¨fieldName£©µÄÖµ½øÐÐÐ޸쬽«ÆäÐÞ¸ÄΪ²ÎÊýÖиø¶¨µÄÖµ£¨fieldValue£©¡£µÚ21ÐÐÖж¨ÒåµÄupdateBySql·½·¨Ôòͨ¹ý¸ø¶¨Ò»¸öÔ¤±àÒë SQLÓï¾ä¼°Æä²ÎÊýÊý×éÀ´Ö´ÐиüвÙ×÷¡£ £¨9£©µÚ22ÐÐ~µÚ23ÐУ¬¶¨ÒåÁËÖØÔØµÄÁ½¸öcount·½·¨£¬ÓÃÓÚ»ñÈ¡²éѯ½á¹ûÖеļǼÌõÊý£¬ÆäÖУ¬µÚ22ÐÐÖж¨ÒåµÄÎ޲εÄcount·½·¨»ñÈ¡µÄÊÇij¸ö±íÖмǼµÄ×ÜÌõÊý£¬µÚ23ÐÐÖж¨ÒåµÄ count·½·¨»ñÈ¡µÄÊÇij¸ö²éѯÓï¾äÖ´ÐкóµÄ½á¹û¼Ç¼ÌõÊý¡£ 5.2 »ùÓÚ·ºÐ͵ÄͨÓà DAO½Ó¿ÚʵÏÖÀàÉè¼Æ ÊÓ Æµ ½² ½â ÔÚ5.1½ÚÖУ¬ÎÒÃÇ´´½¨ÁËÒ»¸ö»ùÓÚ·ºÐ͵ÄͨÓÃDAO½Ó¿Ú£¬ÔÚÆäÖж¨ÒåÁËһЩ³£ÓõIJÙ×÷Êý¾Ý¿âµÄ·½·¨£¬½ÓמÍÐèÒª´´½¨ÆäʵÏÖÀ࣬ÔÚʵÏÖÀàÖÐʵÏÖ½Ó¿ÚÖж¨ÒåµÄ·½·¨¡£ Ê×ÏÈÔÚsrcĿ¼Ï´´½¨java°ü¡°cn.bmxt.dao.common.impl¡±£¬È»ºóÔڸðüÖд´½¨Ò»¸öÀà BaseDaoImpl£¬²¢ÊµÏÖ½Ó¿ÚBaseDao¡£ÊµÏÖÀàBaseDaoImplµÄÉè¼Æ´úÂëÈç5.2-01Ëùʾ¡£ ¡¾´úÂë5.2-01¡¿Îļþ/src/cn.bmxt.dao.common.impl/BaseDaoImpl.java£¬°æ±¾0.01¡£ 01 package cn.bmxt.dao.common.impl; 02 import cn.bmxt.dao.common.BaseDao; 03 import cn.bmxt.entity.common.Entity; 04 import cn.bmxt.util.DbUtil; 05 import java.lang.re.ect.ParameterizedType; 06 import java.util.List; 07 import java.util.Map; 08 public class BaseDaoImpl implements BaseDao { 09 protected Class clazz; 10 { 11 ParameterizedType parameterizedType = (ParameterizedType) this. getClass().getGenericSuperclass(); 12 clazz = (Class) parameterizedType.getActualTypeArguments() [0]; 13 } 14 public T .ndOneById(long id) { 15 return DbUtil.queryEntity(clazz, "select * from " + DbUtil. getTableName(clazz) + " where id=?", id); 16 } 17 public T .ndOneByField(String .eldName, Object .eldValue) { 18 return DbUtil.queryEntity(clazz, "select * from " + DbUtil. getTableName(clazz) + " where " + .eldName + "=?", .eldValue); 19 } 20 public T .ndOneBySql(String sql, Object... sqlParas) { 21 return DbUtil.queryEntity(clazz, sql, sqlParas); 22 } 23 public List .ndAll() { 24 return DbUtil.queryEntityList(clazz, "select * from " + DbUtil. getTableName(clazz)); } 26 public List .ndAllByField(String .eldName, Object .eldValue) { 27 return DbUtil.queryEntityList(clazz, "select * from " + DbUtil. getTableName(clazz) + " where " + .eldName + "=?", .eldValue); 28 } 29 public List .ndAllBySql(String sql, Object... sqlParas) { return DbUtil.queryEntityList(clazz, sql, sqlParas); 31 } 32 public Map .ndMapBySql(String sql, Object... sqlParas) { 33 return DbUtil.queryMap(sql, sqlParas); 34 } public List> .ndMapListBySql(String sql, Object... sqlParams) { 36 return DbUtil.queryMapList(sql, sqlParams); 37 } 38 public int save(T entity) { 39 return DbUtil.insertEntity(entity); } 41 public int save(Map entityFieldMap) { 42 return DbUtil.insertEntity(clazz, entityFieldMap); 43 } 44 public int deleteById(long id) { return DbUtil.deleteEntity(clazz, id); 46 } 47 public int deleteByField(String .eldName, Object .eldValue) { 48 return DbUtil.updateBySql("delete from " + DbUtil. getTableName(clazz) + " where " + .eldName + "=?", .eldValue); 49 } public int deleteBySql(String sql, Object... sqlParas) { 51 return DbUtil.updateBySql(sql, sqlParas); 52 } 53 public int updateById(long id, Map entityFieldMap) { 54 return DbUtil.updateEntity(clazz, id, entityFieldMap); } 56 public int updateByField(String .eldName, Object .eldValue) { 57 return DbUtil.updateBySql("update " + DbUtil. getTableName(clazz) + " set " + .eldName + "=?", .eldValue); 58 } 59 public int updateBySql(String sql, Object... sqlParas) { return DbUtil.updateBySql(sql, sqlParas); 61 } 62 public long count() { 63 return DbUtil.count(clazz); 64 } 65 public long count(String sql, Object... sqlParas) { 66 return DbUtil.count(sql, sqlParas); 67 } 68 } ´úÂë5.2-01˵Ã÷ÈçÏ£º £¨1£©µÚ08ÐУ¬BaseDaoImplÀàµÄÉùÃ÷ÐУ¬ÆäÖж¨ÒåµÄ·ºÐÍT´ú±íEntityÀàµÄ×ÓÀàÐÍ£¬EntityÀàµÄ×ÓÀàÐ;ÍÊÇ4.2½ÚÖж¨ÒåµÄ10¸öʵÌåÀà¡£BaseDaoImplÀàʵÏÖÁËBaseDao½Ó¿Ú£¬Òò´ËÐèÒªÔÚ BaseDaoImplÀàÖÐʵÏÖBaseDao½Ó¿ÚÖж¨ÒåµÄËùÓз½·¨¡£ £¨2£©µÚ09ÐУ¬ÉùÃ÷·ºÐͲÎÊýµÄÀàÐͱäÁ¿£¬ÓÃÓÚ±£´æBaseDaoImplÀàµÄÉùÃ÷ÐÐÖеķºÐͲÎÊýTËù´ú±íµÄʵ¼ÊÀàÐÍ¡£ £¨3£©µÚ10ÐÐ~13ÐУ¬µ±´´½¨BaseDaoImplÀà»òÕ߯ä×ÓÀàµÄʵÀý¶ÔÏóʱ£¬»¨À¨ºÅÖеĴúÂë¿é»á±»Ö´ÐУ¬Æä×÷ÓÃÊÇ»ñÈ¡±»²ÎÊý»¯Á˵ķºÐÍTËù´ú±íµÄʵ¼ÊÀàÐÍ¡£Í¨³£²»»áÖ±½ÓÈ¥´´½¨ BaseDaoImplÀàµÄʵÀý¶ÔÏ󣬶øÊÇ´´½¨Æä×ÓÀàµÄʵÀý¶ÔÏóÀ´Ó¦Óá£×ÓÀàÔÚÉùÃ÷ʱ»áÖ¸¶¨ËüËù¼Ì³ÐµÄ¸¸Àà¡°BaseDaoImpl¡±ÖеIJÎÊýT¾ßÌå´ú±íµÄÊÇÄĸöʵÌåÀà¡£Òò´Ë£¬ÔÚ¹¹ÔìBaseDaoImplÀàµÄ×ÓÀàµÄʵÀý¶ÔÏóʱ£¬»áÖ´ÐеÚ11Ðк͵Ú12ÐдúÂ룬´ËʱµÚ11ÐÐÖеÄthis¹Ø¼ü×Ö´ú±íµÄÊÇÒª¹¹ÔìµÄ×ÓÀàʵÀý¶ÔÏ󣬡°this.getClass()¡±»ñÈ¡µÄ¾ÍÊÇ×ÓÀàµÄÀàÐÍÐÅÏ¢£»È»ºóµ÷Óá°getGenericSuperclass()¡±·½·¨¾Í¿É»ñÈ¡Æä´ø·ºÐ͵ĸ¸À࣬¶øÕâ¸ö¸¸ÀàÕýÊÇÏÖÔÚ¶¨ÒåµÄ¡°BaseDaoImpl¡±£¬ËüÊǾßÓвÎÊý»¯ÀàÐ͵ÄÀ࣬¿ÉÒÔת»»Îª ParameterizedTypeÀàÐÍ¡£ÔÚµÚ12ÐÐÖе÷ÓÃParameterizedTypeµÄgetActualTypeArguments·½·¨¾Í¿ÉÒÔ»ñȡʵ¼ÊµÄ²ÎÊý»¯ÀàÐÍÊý×飬´ÓÕâ¸öÊý×éÖÐÈ¡³öµÚÒ»¸ö£¨Ï±êΪ0£©²ÎÊý»¯ÀàÐÍ£¬¾ÍÊÇT´ú±íµÄʵ¼ÊÀàÐÍ£¬ÒòΪTÕýÊÇBaseDaoImplÀඨÒåʱµÄµÚÒ»¸ö²ÎÊý»¯ÀàÐÍ¡£×îÖÕÄܹ»»ñÈ¡T´ú±íµÄʵ¼ÊÀàÐÍ£¬Ëü¾ÍÊÇ4.2½ÚÖж¨ÒåµÄ10¸öʵÌåÀàÖеÄijһ¸ö¡£ÖªµÀÁË·ºÐͲÎÊýT±íʾµÄÊÇÄĸöʵÌåÀ࣬¾Í¿ÉÒÔͨ¹ýµ÷ÓÃDbUtil¹¤¾ßÀàÖзâ×°ºÃµÄͨÓõIJÙ×÷Êý¾Ý¿âµÄ·ºÐÍ·½·¨£¬À´ÊµÏÖBaseDao½Ó¿ÚÖж¨ÒåµÄ·½·¨ÁË¡£ £¨4£©µÚ14ÐÐ~µÚ67ÐУ¬µ÷ÓÃDbUtil¹¤¾ßÀàÖеÄÏà¹Ø·½·¨£¬ÖðһʵÏÖBaseDao½Ó¿ÚÖж¨ÒåµÄËùÓз½·¨¡£ 5.3 ¶Ô·ÖÒ³Êý¾ÝµÄ·â×°´¦Àí Ò»°ãÀ´Ëµ£¬µ±²éѯ¶àÌõ¼Ç¼ʱ¿ÉÄܳöÏֽ϶àµÄ½á¹ûÌõÊý£¬´Ëʱ³É°ÙÉÏǧÌõÊý¾ÝÔÚÒ»¸öÒ³ÃæÖÐÏÔʾ¿ÉÄÜ»á¹ýÓÚÈß³¤£¬²»±ãÓÚÓû§ÔĶÁ¡£ÔÚÕâÖÖÇé¿öÏ£¬Í¨³£µÄ×ö·¨¾ÍÊÇʹÓ÷ÖÒ³µÄÐÎʽÏÔʾÊý¾Ý£¬ÔÚÿ¸öÊý¾ÝÒ³ÖнöÏÔʾÉÙÁ¿µÄÊý¾Ý£¬È»ºó¸øÓû§Ìṩ·ÖÒ³µ¼º½À¸ÓÃÓÚÊý¾ÝÒ³µÄÇл»¡£ÔÚÊý¾Ý·ÖÒ³µ¼º½À¸ÖУ¬Óû§¿ÉÒÔ×ÔÐÐÉ趨ÿҳÏÔʾµÄÊý¾ÝÌõÄ¿Êý£¬Ò²¿ÉÒÔÉÏϽøÐз­Ò³£¬»òÕßÖ±½ÓÖ¸¶¨ÒªÌø×ªµÄÊý¾ÝÒ³¡£ÊµÏÖÊý¾Ý·ÖÒ³µ¼º½Ê×ÏÈÐèÒªÉè¼ÆÒ»¸ö·ÖҳģÐͶÔÏ󣬻¹ÐèÒª·â×°°´Ò³´Î²éѯÊý¾ÝµÄ·½·¨¡£ 1. ·ÖҳģÐͶÔÏóÉè¼Æ ·ÖҳģÐͶÔÏóÊÇÓÃÓÚÁÙʱ´æ´¢Êý¾ÝµÄÒ»ÖÖÌØÊâ¶ÔÏó¡£ÔÚ·ÖҳģÐͶÔÏóÖУ¬¼ÈÒª ´æ´¢²éѯµ½µÄµ±Ç°Ò³µÄÊý¾Ý¼¯ºÏ£¬Ò²Òª±£´æ·ÖÒ³µÄÏà¹ØÐÅÏ¢¡£Êý¾Ý¼¯ºÏ¿ÉÒÔʹÓÃÁÐ ÊÓ Æµ ½² ½â±í½øÐд洢£¬ÁбíÖд洢µÄ¾ßÌå¶ÔÏóÀàÐͲ¢·ÇÊÇÈ·¶¨µÄ£¬²éѯ¿¼ÉúÁбíʱ´æ´¢µÄÊÇ ¿¼Éú¶ÔÏ󣬲éѯ±¨ÃûÐÅÏ¢Áбíʱ´æ´¢µÄÊDZ¨ÃûÐÅÏ¢¶ÔÏ󣬻¹ÓÐһЩ²éѯ½á¹ûµÃµ½µÄÊÇMapÀàÐÍÊý¾Ý£¬Òò´ËÔÚÉè¼Æ·ÖҳģÐͶÔÏóʱҪʹÓ÷ºÐÍÀ´ÃèÊö²»Í¬ÀàÐ͵ÄÊý¾Ý¼¯ºÏ¡£·ÖÒ³µÄÏà¹ØÐÅÏ¢ÓÃÓÚÃèÊöÊý¾Ý·ÖÒ³Çé¿ö£¬°üÀ¨µ±Ç°Ò³´Î¡¢Ã¿Ò³ÏÔʾµÄÌõÄ¿Êý¡¢Êý¾ÝµÄ×ÜÌõÊý¡¢Êý¾ÝµÄ×ÜÒ³ÊýµÈ¡£ ÔÚ¡°cn.bmxt.entity.common¡±°üÖд´½¨·ÖҳģÐÍÀàPage£¬ÆäÉè¼Æ´úÂëÈç5.3-01Ëùʾ¡£ ¡¾´úÂë5.3-01¡¿Îļþ/src/cn.bmxt.entity.common/Page.java£¬°æ±¾1.0¡£ 01 package cn.bmxt.entity.common; 02 import java.io.Serializable; 03 import java.util.ArrayList; 04 import java.util.List; 05 public class Page implements Serializable { 06 private static .nal long serialVersionUID = 1L; 07 private int number = 1; // µ±Ç°Ò³´Î 08 private int size = 10; // ÿҳÏÔʾµÄÌõÄ¿Êý 09 private long total = 0; // Êý¾ÝµÄ×ÜÌõÊý 10 private int pages = 1; // Êý¾Ý×ÜÒ³Êý 11 private int prev = 1; // ÉÏÒ»Ò³ 12 private int next = 1; // ÏÂÒ»Ò³ 13 private List items = new ArrayList(); // ´æ·Åµ±Ç°Ò³´ÎµÄÊý¾Ý¼¯ºÏ 14 public Page() { super(); } 15 public Page(int number, int size, long total) { 16 super(); 17 this.number = number > 0 ? number : 1; 18 this.size = size > 0 ? size : 10; 19 this.total = total; 20 this.setPages(); 21 this.setPrev(); 22 this.setNext(); 23 } 24 public int getNumber() { return number; } 25 public void setNumber(int number) { this.number = number; } 26 public int getSize() { return size; } 27 public void setSize(int size) { this.size = size; } 28 public long getTotal() { return total; } 29 public void setTotal(long total) { this.total = total; } 30 public int getPages() { return pages; } 31 public void setPages() { 32 if (total == 0) { 33 pages = 1; 34 } else { 35 pages = (int)((total % size == 0)? total/size : total/size + 1); 36 } 37 } 38 public int getPrev() { return prev; } 39 public void setPrev() { prev = number > 1 ? number-1 : 1;} 40 public int getNext() { return next; } 41 public void setNext() { next = number < pages ? number+1 : pages;} 42 public List getItems() { return items; } 43 public void setItems(List items) { this.items = items; } 44 } ´úÂë5.3-01˵Ã÷ÈçÏ£º £¨1£©µÚ07ÐУ¬¶¨ÒåÁË˽ÓгÉÔ±±äÁ¿number£¬ÓÃÓÚ´æ´¢µ±Ç°Ò³´Î£¬³õʼ»¯Îª1¡£ÔÚµÚ24ÐÐ~µÚ25ÐÐÖж¨ÒåÁ˸óÉÔ±µÄgetterºÍsetter·½·¨¡£ £¨2£©µÚ08ÐУ¬¶¨ÒåÁË˽ÓгÉÔ±±äÁ¿size£¬ÓÃÓڴ洢ÿҳÏÔʾµÄÌõÄ¿Êý£¬³õʼ»¯Îª10¡£ÔÚµÚ26ÐÐ~µÚ27ÐÐÖж¨ÒåÁ˸óÉÔ±µÄgetterºÍsetter·½·¨¡£ £¨3£©µÚ09ÐУ¬¶¨ÒåÁË˽ÓгÉÔ±±äÁ¿total£¬ÓÃÓÚ´æ´¢Êý¾ÝµÄ×ÜÌõÊý£¬³õʼ»¯Îª0¡£ÔÚµÚ28ÐÐ~µÚ29ÐÐÖж¨ÒåÁ˸óÉÔ±µÄgetterºÍsetter·½·¨¡£ £¨4£©µÚ10ÐУ¬¶¨ÒåÁË˽ÓгÉÔ±±äÁ¿pages£¬ÓÃÓÚ´æ´¢Êý¾ÝµÄ×ÜÒ³Êý£¬³õʼ»¯Îª1¡£ÔÚµÚ30ÐÐ~µÚ37ÐÐÖж¨ÒåÁ˸óÉÔ±µÄgetterºÍsetter·½·¨¡£ÔÚÆäsetter·½·¨ÖУ¬pagesµÄÖµÊǸù¾Ýtotal£¨Êý¾ÝµÄ×ÜÌõÊý£©ºÍsize£¨Ã¿Ò³ÏÔʾµÄÌõÄ¿Êý£©¼ÆËã³öÀ´µÄ£¬Èç¹ûÊý¾ÝµÄ×ÜÌõÊýtotalΪ0£¬¾ÍÉèÖÃ×ÜÒ³ÊýpagesΪ1£»Èç¹ûÊý¾ÝµÄ×ÜÌõÊýtotal²»Îª0£¬ÔòÐèÒª½áºÏÿҳÏÔʾµÄÌõÄ¿Êýsize½øÐмòµ¥¼ÆË㣬¾ßÌåÇó½â¹ý³Ì²Î¼ûµÚ35ÐдúÂë¡£ £¨5£©µÚ11ÐУ¬¶¨ÒåÁË˽ÓгÉÔ±±äÁ¿prev£¬ÓÃÓÚ´æ´¢ÉÏÒ»Ò³µÄÒ³´Î£¬³õʼ»¯Îª1¡£ÔÚµÚ38ÐÐ~µÚ39ÐÐÖж¨ÒåÁ˸óÉÔ±µÄ getterºÍsetter·½·¨¡£ÔÚÆä setter·½·¨ÖУ¬ prevµÄÖµÊǸù¾Ý number£¨µ±Ç°Ò³´Î£©¼ÆËã³öÀ´µÄ£¬Èç¹ûnumber´óÓÚ1£¬prev¾ÍµÈÓÚ¡°number-1¡±£¬·ñÔòprev¾ÍµÈÓÚ1¡£ £¨6£©µÚ12ÐУ¬¶¨ÒåÁË˽ÓгÉÔ±±äÁ¿next£¬ÓÃÓÚ´æ´¢ÏÂÒ»Ò³µÄÒ³´Î£¬³õʼ»¯Îª1¡£ÔÚµÚ40ÐÐ~µÚ41ÐÐÖж¨ÒåÁ˸óÉÔ±µÄgetterºÍsetter·½·¨¡£ÔÚÆäsetter·½·¨ÖУ¬nextµÄÖµÊǸù¾Ýnumber£¨µ±Ç°Ò³´Î£©ºÍpages£¨Êý¾ÝµÄ×ÜÒ³Êý£©¼ÆËã³öÀ´µÄ£¬Èç¹ûnumberСÓÚpages£¬next¾ÍµÈÓÚ ¡°number+1¡±£¬·ñÔònext¾ÍµÈÓÚpages¡£ £¨7£©µÚ13ÐУ¬¶¨ÒåÁË˽ÓгÉÔ±±äÁ¿items£¬ÓÃÓÚ´æ´¢µ±Ç°Ò³µÄÊý¾ÝÁÐ±í£¬ÆäÀàÐÍÉùÃ÷Ϊ»ùÓÚ·ºÐ͵ÄÁÐ±í¼¯ºÏ¡°List¡±£¬²¢³õʼ»¯Îª¡°ArrayList¡±ÀàÐÍ¡£ÔÚµÚ42ÐÐ~µÚ43ÐÐÖж¨ÒåÁ˸óÉÔ±µÄgetterºÍsetter·½·¨¡£ 2. ·â×°²éѯ·ÖÒ³Êý¾ÝµÄ·½·¨ ÔÚBaseDao½Ó¿ÚÖÐÐÂÔö3¸öÓÃÓÚ²éѯ·ÖÒ³Êý¾ÝµÄͨÓýӿڷ½·¨£¬¸üкóµÄ BaseDao½Ó¿ÚµÄÍêÕû´úÂëÈç5.3-02Ëùʾ¡£ÊÓ Æµ ½² ½â¡¾´úÂë5.3-02¡¿Îļþ/src/cn.bmxt.dao.common/BaseDao.java£¬°æ±¾1.0£¬ÉÏÒ»¸ö°æ±¾²Î¼û´úÂë5.1-01¡£ 01 package cn.bmxt.dao.common; 02 import cn.bmxt.entity.common.Entity; 03 import cn.bmxt.entity.common.Page; 04 import java.util.List; 05 import java.util.Map; 06 public interface BaseDao { 07 ...´Ë´¦Îª¡¾´úÂë 5.1-01¡¿ÖÐµÄµÚ 06ÐÐ ~µÚ 23ÐдúÂë 08 public Page .ndOnePageBySql(int number, int size, String sql, Object... sqlParas); 09 public Page .ndOnePage(int number, int size); 10 public Page> .ndOnePageMapListBySql(int number, int size, String sql, Object... sqlParas); 11 } ´úÂë5.3-02ÖеÚ08ÐÐ~µÚ10ÐÐΪÐÂÔöµÄ3¸ö²éѯ·ÖÒ³Êý¾ÝµÄ½Ó¿Ú·½·¨£¬·½·¨Öж¼ÐèÒª´«²ÎnumberºÍsize£¬ÆäÖÐnumberΪ·ÖÒ³µÄÒ³´Î£¬sizeΪÿҳÏÔʾµÄÌõÄ¿Êý¡£µÚ08ÐÐÖж¨ÒåµÄfindOnePageBySql·½·¨Í¨¹ý¸ø¶¨Ò»¸öÔ¤±àÒëSQLÓï¾ä¼°Æä²ÎÊýÊý×é²éѯµÃµ½Ò»Ò³ÊµÌåÁÐ±í¼¯ºÏ£¬²¢½«Æä·â×°ÔÚ Page¶ÔÏóÖзµ»Ø¡£µÚ 09ÐÐÖж¨ÒåµÄ findOnePage·½·¨ÓÃÓÚ²éѯһ¸ö±íÖеÄijһҳ¼Ç¼£¬²¢½«µÃµ½µÄʵÌåÁÐ±í¼¯ºÏ·â×°ÔÚPage¶ÔÏóÖзµ»Ø¡£µÚ10ÐÐÖж¨ÒåµÄ findOnePageMapListBySqlͨ¹ý¸ø¶¨Ò»¸öÔ¤±àÒëSQLÓï¾ä¼°Æä²ÎÊýÊý×é²éѯµÃµ½Ò»Ò³MapÀàÐÍÊý¾ÝµÄ¼¯ºÏ£¬²¢½«Æä·â×°ÔÚPage¶ÔÏóÖзµ»Ø¡£ BaseDao½Ó¿ÚÖÐÐÂÔöµÄ3¸öÓÃÓÚ²éѯ·ÖÒ³Êý¾ÝµÄͨÓýӿڷ½·¨£¬ÐèÒªÔÚÆäʵÏÖÀà BaseDaoImplÖÐʵÏÖ¡£ÊµÏÖÕâ3¸ö½Ó¿Ú·½·¨µÄBaseDaoImplÀàµÄÍêÕû´úÂëÈç5.3-03Ëùʾ¡£ ¡¾´úÂë5.3-03¡¿Îļþ/src/cn.bmxt.dao.common.impl/BaseDaoImpl.java£¬°æ±¾1.0£¬ÉÏÒ»¸ö°æ±¾²Î¼û´úÂë5.2-01¡£ 01 package cn.bmxt.dao.common.impl; 02 import cn.bmxt.dao.common.BaseDao; 03 import cn.bmxt.entity.common.Entity; 04 import cn.bmxt.util.DbUtil; 05 import cn.bmxt.entity.common.Page; 06 import org.apache.commons.lang3.ArrayUtils; 07 import java.lang.re.ect.ParameterizedType; 08 import java.util.List; 09 import java.util.Map; 10 public class BaseDaoImpl implements BaseDao { 11 ...´Ë´¦Îª¡¾´úÂë 5.2-01¡¿ÖÐµÄµÚ 09ÐÐ ~µÚ 67ÐдúÂë 12 public Page .ndOnePageBySql(int number, int size, String sql, Object... sqlParas) { 13 long total = count(sql, sqlParas); 14 Page page = new Page<>(number, size, total); 15 if(total > 0){ 16 String pageSql = sql + " limit ?,? "; 17 Object[] sqlParasLimit = { (number - 1) * size, size }; 18 Object[] sqlParasAll = ArrayUtils.addAll(sqlParas, sqlParasLimit); 19 page.setItems(.ndAllBySql(pageSql, sqlParasAll)); 20 } 21 return page; 22 } 23 public Page .ndOnePage(int number, int size) { 24 return .ndOnePageBySql(number, size, "select * from " + DbUtil. getTableName(clazz)); 25 } 26 public Page> .ndOnePageMapListBySql(int number, int size, String sql, Object... sqlParas) { 27 long total = count(sql, sqlParas); 28 Page> page = new Page<>(number, size, total); 29 if(total > 0){ 30 String pageSql = sql + " limit ?,? "; 31 Object[] sqlParasLimit = { (number - 1) * size, size }; 32 Object[] sqlParasAll = ArrayUtils.addAll(sqlParas, sqlParasLimit); 33 page.setItems(.ndMapListBySql(pageSql, sqlParasAll)); 34 } 35 return page; 36 } 37 } ´úÂë5.3-03ÖÐÐÂÔöµÄ3¸öʵÏÖ·½·¨·Ö±ð˵Ã÷ÈçÏ£º £¨1£©µÚ12ÐÐ~µÚ22ÐУ¬ÊµÏÖÁËfindOnePageBySql·½·¨¡£µÚ13ÐÐÊ×Ïȵ÷ÓÃcount·½·¨»ñÈ¡¸ø¶¨²éѯÓï¾äµÄ½á¹û¼Ç¼×ÜÌõÊýtotal¡£µÚ14Ðиù¾ÝÓû§´«ÈëµÄnumber£¨Ò³´Î£©¡¢size£¨Ã¿Ò³ÏÔʾµÄÌõÄ¿Êý£©ÒÔ¼°µÚ13Ðвéѯµ½µÄ¼Ç¼×ÜÌõÊýtotal¹¹ÔìÒ»¸öPage¶ÔÏó¡£µÚ15ÐÐÅжÏtotalÊÇ·ñ´óÓÚ 0£¬Èç¹ûtotal´óÓÚ0£¬¼ÌÐøÖ´ÐзÖÒ³Êý¾ÝµÄ²éѯ¡£µÚ16ÐÐʹÓÃlimit¹Ø¼ü×Ö¹¹½¨ÓÃÓÚ·ÖÒ³²éѯµÄÔ¤±àÒëSQLÓï¾ä¡£µÚ17Ðиù¾ÝnumberºÍsize¹¹½¨limit×Ó¾äµÄ²ÎÊý¡£µÚ18Ðн«Óû§ÌṩµÄÔ¤±àÒë SQLÓï¾äµÄ²ÎÊýÓë limit×Ó¾äµÄ²ÎÊý½øÐкϲ¢¡£µÚ 19Ðе÷Óà findAllBySql·½·¨£¬´«ÈëÓÃÓÚ·ÖÒ³²éѯµÄÔ¤±àÒëSQLÓï¾äÒÔ¼°ÔÚµÚ18ÐÐÖкϲ¢ºóµÄÓï¾ä²ÎÊý£¬×îºó½«²éѯµÃµ½µÄʵÌåÁÐ±í¼¯ºÏ·â×°µ½page¶ÔÏóµÄitemsÖС£µÚ21Ðзµ»Øpage¶ÔÏó¡£ £¨2£©µÚ23ÐÐ~µÚ25ÐУ¬ÊµÏÖÁËfindOnePage·½·¨¡£²éѯµÄÊÇÒ»¸ö±íÖеÄijһҳ¼Ç¼£¬Òò´ËÆä²éѯÓï¾äÊǹ̶¨µÄ£¬Í¨¹ýµ÷Óà findOnePageBySql·½·¨´«ÈëÕâ¸ö¹Ì¶¨µÄ²éѯÓï¾ä¼´¿ÉʵÏÖ·½·¨¹¦ÄÜ¡£ £¨3£©µÚ26ÐÐ~µÚ36ÐУ¬ÊµÏÖÁËfindOnePageMapListBySql·½·¨¡£ÓëfindOnePageBySql·½·¨µÄ²»Í¬Ö®´¦ÔÚÓÚ£¬¸Ã·½·¨²éѯµÃµ½µÄÊÇMapÀàÐ͵ÄÊý¾Ý¼¯ºÏ¡£³ý´ËÖ®Í⣬¸Ã·½·¨ÊµÏÖʱµÄ²Ù×÷²½ÖèÓëfindOnePageBySql·½·¨µÄʵÏÖ²½Öè»ù±¾Ò»Ö£¬ÆäÖеÚ33ÐÐÔÚ²éѯ·ÖÒ³Êý¾Ýʱµ÷Óõķ½·¨ ÐèÒªÌæ»»ÎªfindMapListBySql·½·¨¡£ 5.4 ʵÌåÀà DAO½Ó¿Ú¼°ÆäʵÏÖÀàÉè¼Æ ÊÓ Æµ ½² ½â ʵÌåÀàDAO½Ó¿ÚÐèÒª¼Ì³ÐͨÓõÄBaseDao½Ó¿Ú£¬²¢ÌṩBaseDao½Ó¿ÚÖзºÐͲÎÊýT´ú±íµÄʵ¼ÊÀàÐÍ¡£ÊµÌåÀàDAO½Ó¿ÚµÄʵÏÖÀàÐèÒª¼Ì³ÐBaseDao½Ó¿ÚµÄʵÏÖÀàBaseDaoImpl£¬Í¬Ê±ÊµÏÖʵÌåÀàDAO½Ó¿Ú¡£Í¨¹ýÉÏÊö¼Ì³ÐºÍʵÏÖ»úÖÆ£¬ÊµÌåÀàDAO×é¼þ¾ÍÄܹ»¶ÔͨÓÃDAO½Ó¿ÚÖж¨ÒåµÄ·½·¨½øÐи´Óá£ÏÂÃæ·Ö±ð¶Ô¸÷¸öʵÌåÀàDAO½Ó¿Ú¼°ÆäʵÏÖÀà½øÐÐÉè¼Æ¡£ 1. ´´½¨SiteDao½Ó¿Ú¼°ÆäʵÏÖÀà SiteDao½Ó¿Ú¼Ì³ÐͨÓõÄBaseDao½Ó¿Ú£¬²¢ÌṩBaseDao½Ó¿ÚÖзºÐͲÎÊýT´ú±íµÄʵ¼ÊÀàÐÍ Site¡£ÔÚ°ü¡°cn.bmxt.dao¡±Öд´½¨SiteDao½Ó¿Ú£¬½Ó¿ÚµÄ´úÂëÈç5.4-01Ëùʾ¡£ ¡¾´úÂë5.4-01¡¿Îļþ/src/cn.bmxt.dao/SiteDao.java£¬°æ±¾1.0¡£ 01 package cn.bmxt.dao; 02 import cn.bmxt.dao.common.BaseDao; 03 import cn.bmxt.entity.Site; 04 public interface SiteDao extends BaseDao { 05 } SiteDao½Ó¿ÚµÄʵÏÖÀàÐèÒª¼Ì³Ð BaseDao½Ó¿ÚµÄʵÏÖÀà BaseDaoImpl£¬Ìṩ BaseDaoImplÀàÖеķºÐͲÎÊýT´ú±íµÄʵ¼ÊÀàÐÍSite£¬Í¬Ê±ÊµÏÖSiteDao½Ó¿Ú¡£ Ê×ÏÈÔÚsrcĿ¼Ï´´½¨°ü¡°cn.bmxt.dao.impl¡±£¬ÓÃÓÚ×éÖ¯ËùÓеÄʵÌåÀàDao½Ó¿ÚµÄʵÏÖÀà¡£½Ó×ÅÔÚ°ü¡°cn.bmxt.dao.impl¡±Öд´½¨SiteDao½Ó¿ÚµÄʵÏÖÀàSiteDaoImpl£¬ÆäʵÏÖ´úÂëÈç5.4-02Ëùʾ¡£ ¡¾´úÂë5.4-02¡¿Îļþ/src/cn.bmxt.dao.impl/SiteDaoImpl.java£¬°æ±¾1.0¡£ 01 package cn.bmxt.dao.impl; 02 import cn.bmxt.dao.SiteDao; 03 import cn.bmxt.dao.common.impl.BaseDaoImpl; 04 import cn.bmxt.entity.Site; 05 public class SiteDaoImpl extends BaseDaoImpl implements SiteDao { 06 } ÎÒÃÇ¿´µ½£¬Í¨¹ýÉÏÊöµÄ¼Ì³ÐºÍʵÏÖ»úÖÆ£¬ÔÚSiteDao½Ó¿ÚÖÐ䶨ÒåÈκÎеĽӿڷ½·¨£¬¾Í¿ÉÒÔ¸´ÓÃÄÇЩÔÚͨÓÃDAO½Ó¿ÚBaseDaoÖж¨ÒåµÄ½Ó¿Ú·½·¨¡£Í¬ÑùµØ£¬ÔÚSiteDao½Ó¿ÚµÄʵÏÖÀàSiteDaoImplÖÐÒ²²»ÐèҪʵÏÖеĽӿڷ½·¨£¬¾Í¿ÉÒÔ¸´ÓÃÄÇЩÔÚͨÓÃDAO½Ó¿ÚʵÏÖÀà BaseDaoImplÖÐÒѾ­ÊµÏֵĽӿڷ½·¨¡£ÎÒÃÇ¿ÉÒÔ±àд´úÂë½øÐвâÊÔ£¬ÔÚ¡°cn.bmxt.util¡±°üÏ嵀 JunitTestÀàÖÐÐÂÔöÒ»¸öµ¥Ôª²âÊÔ·½·¨testSiteDaoImpl£¬·½·¨´úÂëÈç5.4-03Ëùʾ¡£ ¡¾´úÂë5.4-03¡¿²âÊÔSiteDaoImplÀà¼Ì³ÐµÄ·½·¨£¬´úÂëλÖãº/src/cn.bmxt.util/JunitTest.java¡£ 01 @Test 02 public void testSiteDaoImpl(){ 03 SiteDao siteDao = new SiteDaoImpl(); 04 System.out.println(siteDao..ndOneById(1)); 05 System.out.println(siteDao..ndMapBySql("select site_school, site_ name from site where id=?", 1)); 06 } ´úÂë5.4-03ÖвâÊÔÁËSiteDaoImpl¼Ì³ÐµÄÁ½¸ö·½·¨£¬·Ö±ðÊÇ.ndOneById·½·¨ºÍ.ndMapBySql·½·¨¡£¸Ãµ¥Ôª²âÊÔ·½·¨Ö´ÐкóµÄ½á¹ûÈçÏÂËùʾ£¬Á½¸ö·½·¨¶¼Äܹ»³É¹¦µØ²éѯ³ösite±íÖÐidֵΪ1µÄ¼Ç¼¡£ 01 Site(site_school=XXX´óѧ , site_name=2023Äê¸ßÖ°Éý±¾±¨Ãûϵͳ , site_location=XXXÊÐ XXX· XXXºÅ , site_zip_code=300000, site_ contact=022-88888888, site_copy=°æÈ¨ËùÓÐ ý 2023-2024 ½ò ICP±¸ XXXXºÅ ) 02 {site_name=2023Äê¸ßÖ°Éý±¾±¨Ãûϵͳ , site_school=XXX´óѧ } Ò»°ãÀ´Ëµ£¬Èç¹ûÔÚϵͳÉϲãµÄij¸ö¹¦ÄÜÖв»Éæ¼°ÌØÊâµÄÒµÎñÐèÇó£¬Í¨ÓÃDAO½Ó¿Ú¼°ÆäʵÏÖÀàÖзâ×°µÄÊý¾Ý²Ù×÷·½·¨¾ÍÄܹ»Âú×ãÐèÒªÁË¡£µ±È»£¬¶ÔÓÚϵͳÉϲãÖеÄÒ»Ð©ÌØÊâÒµÎñÐèÇ󣬽öͨ¹ýµ÷ÓÃͨÓÃDAO½Ó¿Ú¼°ÆäʵÏÖÀàÖзâ×°µÄ·½·¨¿ÉÄÜÎÞ·¨ÊµÏ֯书ÄÜ£¬´ËʱÎÒÃÇ¿ÉÒÔÔÚÏà¹ØµÄʵÌåÀàDAO½Ó¿ÚÖж¨ÒåеĽӿڷ½·¨£¬È»ºóÔÚʵÌåÀàDAO½Ó¿ÚµÄʵÏÖÀàÖÐȥʵÏÖ¼´¿É¡£ 2. ´´½¨AdminDao½Ó¿Ú¼°ÆäʵÏÖÀà AdminDao½Ó¿Ú¼Ì³ÐͨÓõÄBaseDao½Ó¿Ú£¬²¢ÌṩBaseDao½Ó¿ÚÖзºÐͲÎÊýT´ú±íµÄʵ¼ÊÀàÐÍAdmin¡£ÔÚ°ü¡°cn.bmxt.dao¡±Öд´½¨AdminDao½Ó¿Ú£¬½Ó¿ÚµÄ´úÂëÈç5.4-04Ëùʾ¡£ ¡¾´úÂë5.4-04¡¿Îļþ/src/cn.bmxt.dao/AdminDao.java£¬°æ±¾0.01¡£ 01 package cn.bmxt.dao; 02 import cn.bmxt.dao.common.BaseDao; 03 import cn.bmxt.entity.Admin; 04 public interface AdminDao extends BaseDao { 05 } AdminDao½Ó¿ÚµÄʵÏÖÀàÐèÒª¼Ì³ÐBaseDao½Ó¿ÚµÄʵÏÖÀàBaseDaoImpl£¬ÌṩBaseDaoImplÀàÖеķºÐͲÎÊýT´ú±íµÄʵ¼ÊÀàÐÍAdmin£¬Í¬Ê±ÊµÏÖAdminDao½Ó¿Ú¡£ÔÚ°ü¡°cn.bmxt.dao.impl¡±Öд´½¨AdminDao½Ó¿ÚµÄʵÏÖÀàAdminDaoImpl£¬ÆäʵÏÖ´úÂëÈç5.4-05Ëùʾ¡£ ¡¾´úÂë5.4-05¡¿Îļþ/src/cn.bmxt.dao.impl/AdminDaoImpl.java£¬°æ±¾0.01¡£ 01 package cn.bmxt.dao.impl; 02 import cn.bmxt.dao.AdminDao; 03 import cn.bmxt.dao.common.impl.BaseDaoImpl; 04 import cn.bmxt.entity.Admin; 05 public class AdminDaoImpl extends BaseDaoImpl implements AdminDao { 06 } 3. ´´½¨PhaseDao½Ó¿Ú¼°ÆäʵÏÖÀà PhaseDao½Ó¿Ú¼Ì³ÐͨÓõÄBaseDao½Ó¿Ú£¬²¢ÌṩBaseDao½Ó¿ÚÖзºÐͲÎÊýT´ú±íµÄʵ¼ÊÀàÐÍ Phase¡£ÔÚ°ü¡°cn.bmxt.dao¡±Öд´½¨PhaseDao½Ó¿Ú£¬½Ó¿ÚµÄ´úÂëÈç5.4-06Ëùʾ¡£ ¡¾´úÂë5.4-06¡¿Îļþ/src/cn.bmxt.dao/PhaseDao.java£¬°æ±¾0.01¡£ 01 package cn.bmxt.dao; 02 import cn.bmxt.dao.common.BaseDao; 03 import cn.bmxt.entity.Admin; 04 public interface PhaseDao extends BaseDao { 05 } PhaseDao½Ó¿ÚµÄʵÏÖÀàÐèÒª¼Ì³ÐBaseDao½Ó¿ÚµÄʵÏÖÀàBaseDaoImpl£¬ÌṩBaseDaoImplÀàÖеķºÐͲÎÊýT´ú±íµÄʵ¼ÊÀàÐÍPhase£¬Í¬Ê±ÊµÏÖPhaseDao½Ó¿Ú¡£ÔÚ°ü¡°cn.bmxt.dao.impl¡±Öд´½¨PhaseDao½Ó¿ÚµÄʵÏÖÀàPhaseDaoImpl£¬ÆäʵÏÖ´úÂëÈç5.4-07Ëùʾ¡£ ¡¾´úÂë5.4-07¡¿Îļþ/src/cn.bmxt.dao.impl/PhaseDaoImpl.java£¬°æ±¾0.01¡£ 01 package cn.bmxt.dao.impl; 02 import cn.bmxt.dao.PhaseDao; 03 import cn.bmxt.dao.common.impl.BaseDaoImpl; 04 import cn.bmxt.entity.Phase; 05 public class PhaseDaoImpl extends BaseDaoImpl implements PhaseDao { 06 } 4. ´´½¨MajorDao½Ó¿Ú¼°ÆäʵÏÖÀà MajorDao½Ó¿Ú¼Ì³ÐͨÓõÄBaseDao½Ó¿Ú£¬²¢ÌṩBaseDao½Ó¿ÚÖзºÐͲÎÊýT´ú±íµÄʵ¼ÊÀàÐÍMajor¡£ÔÚ°ü¡°cn.bmxt.dao¡±Öд´½¨MajorDao½Ó¿Ú£¬½Ó¿ÚµÄ´úÂëÈç5.4-08Ëùʾ¡£ ¡¾´úÂë5.4-08¡¿Îļþ/src/cn.bmxt.dao/MajorDao.java£¬°æ±¾1.0¡£ 01 package cn.bmxt.dao; 02 import cn.bmxt.dao.common.BaseDao; 03 import cn.bmxt.entity.Major; 04 public interface MajorDao extends BaseDao { 05 } MajorDao½Ó¿ÚµÄʵÏÖÀàÐèÒª¼Ì³Ð BaseDao½Ó¿ÚµÄʵÏÖÀà BaseDaoImpl£¬Ìṩ BaseDaoImplÀàÖеķºÐͲÎÊýT´ú±íµÄʵ¼ÊÀàÐÍMajor£¬Í¬Ê±ÊµÏÖMajorDao½Ó¿Ú¡£ÔÚ°ü¡°cn.bmxt.dao.impl¡±Öд´½¨MajorDao½Ó¿ÚµÄʵÏÖÀàMajorDaoImpl£¬ÆäʵÏÖ´úÂëÈç5.4-09Ëùʾ¡£ ¡¾´úÂë5.4-09¡¿Îļþ/src/cn.bmxt.dao.impl/MajorDaoImpl.java£¬°æ±¾1.0¡£ 01 package cn.bmxt.dao.impl; 02 import cn.bmxt.dao.MajorDao; 03 import cn.bmxt.dao.common.impl.BaseDaoImpl; 04 import cn.bmxt.entity.Major; 05 public class MajorDaoImpl extends BaseDaoImpl implements MajorDao { 06 } 5. ´´½¨CourseDao½Ó¿Ú¼°ÆäʵÏÖÀà CourseDao½Ó¿Ú¼Ì³ÐͨÓõÄBaseDao½Ó¿Ú£¬²¢ÌṩBaseDao½Ó¿ÚÖзºÐͲÎÊýT´ú±íµÄʵ¼ÊÀàÐÍCourse¡£ÔÚ°ü¡°cn.bmxt.dao¡±Öд´½¨CourseDao½Ó¿Ú£¬½Ó¿ÚµÄ´úÂëÈç5.4-10Ëùʾ¡£ ¡¾´úÂë5.4-10¡¿Îļþ/src/cn.bmxt.dao/CourseDao.java£¬°æ±¾1.0¡£ 01 package cn.bmxt.dao; 02 import cn.bmxt.dao.common.BaseDao; 03 import cn.bmxt.entity.Course; 04 public interface CourseDao extends BaseDao { 05 } CourseDao½Ó¿ÚµÄʵÏÖÀàÐèÒª¼Ì³ÐBaseDao½Ó¿ÚµÄʵÏÖÀàBaseDaoImpl£¬ÌṩBaseDaoImplÀàÖеķºÐͲÎÊýT´ú±íµÄʵ¼ÊÀàÐÍCourse£¬Í¬Ê±ÊµÏÖCourseDao½Ó¿Ú¡£ÔÚ°ü¡°cn.bmxt.dao. impl¡±Öд´½¨CourseDao½Ó¿ÚµÄʵÏÖÀàCourseDaoImpl£¬ÆäʵÏÖ´úÂëÈç5.4-11Ëùʾ¡£ ¡¾´úÂë5.4-11¡¿Îļþ/src/cn.bmxt.dao.impl/CourseDaoImpl.java£¬°æ±¾1.0¡£ 01 package cn.bmxt.dao.impl; 02 import cn.bmxt.dao.CourseDao; 03 import cn.bmxt.dao.common.impl.BaseDaoImpl; 04 import cn.bmxt.entity.Course; 05 public class CourseDaoImpl extends BaseDaoImpl implements CourseDao { 06 } 6. ´´½¨StudentDao½Ó¿Ú¼°ÆäʵÏÖÀà StudentDao½Ó¿Ú¼Ì³ÐͨÓõÄBaseDao½Ó¿Ú£¬²¢ÌṩBaseDao½Ó¿ÚÖзºÐͲÎÊýT´ú±íµÄʵ¼ÊÀàÐÍStudent¡£ÔÚ°ü¡°cn.bmxt.dao¡±Öд´½¨StudentDao½Ó¿Ú£¬½Ó¿ÚµÄ´úÂëÈç5.4-12Ëùʾ¡£ ¡¾´úÂë5.4-12¡¿Îļþ/src/cn.bmxt.dao/StudentDao.java£¬°æ±¾0.01¡£ 01 package cn.bmxt.dao; 02 import cn.bmxt.dao.common.BaseDao; 03 import cn.bmxt.entity.Student; 04 public interface StudentDao extends BaseDao { 05 } StudentDao½Ó¿ÚµÄʵÏÖÀàÐèÒª¼Ì³ÐBaseDao½Ó¿ÚµÄʵÏÖÀàBaseDaoImpl£¬ÌṩBaseDaoImplÀàÖеķºÐͲÎÊýT´ú±íµÄʵ¼ÊÀàÐÍStudent£¬Í¬Ê±ÊµÏÖStudentDao½Ó¿Ú¡£ÔÚ°ü¡°cn.bmxt.dao. impl¡±Öд´½¨StudentDao½Ó¿ÚµÄʵÏÖÀàStudentDaoImpl£¬ÆäʵÏÖ´úÂëÈç5.4-13Ëùʾ¡£ ¡¾´úÂë5.4-13¡¿Îļþ/src/cn.bmxt.dao.impl/StudentDaoImpl.java£¬°æ±¾0.01¡£ 01 package cn.bmxt.dao.impl; 02 import cn.bmxt.dao.StudentDao; 03 import cn.bmxt.dao.common.impl.BaseDaoImpl; 04 import cn.bmxt.entity.Student; 05 public class StudentDaoImpl extends BaseDaoImpl implements StudentDao { 06 } 7. ´´½¨EnrollDao½Ó¿Ú¼°ÆäʵÏÖÀà EnrollDao½Ó¿Ú¼Ì³ÐͨÓõÄBaseDao½Ó¿Ú£¬²¢ÌṩBaseDao½Ó¿ÚÖзºÐͲÎÊýT´ú±íµÄʵ¼ÊÀàÐÍEnroll¡£ÔÚ°ü¡°cn.bmxt.dao¡±Öд´½¨EnrollDao½Ó¿Ú£¬½Ó¿ÚµÄ´úÂëÈç5.4-14Ëùʾ¡£ ¡¾´úÂë5.4-14¡¿Îļþ/src/cn.bmxt.dao/EnrollDao.java£¬°æ±¾0.01¡£ 01 package cn.bmxt.dao; 02 import cn.bmxt.dao.common.BaseDao; 03 import cn.bmxt.entity.Enroll; 04 public interface EnrollDao extends BaseDao { 05 } EnrollDao½Ó¿ÚµÄʵÏÖÀàÐèÒª¼Ì³ÐBaseDao½Ó¿ÚµÄʵÏÖÀàBaseDaoImpl£¬ÌṩBaseDaoImplÀàÖеķºÐͲÎÊýT´ú±íµÄʵ¼ÊÀàÐÍEnroll£¬Í¬Ê±ÊµÏÖEnrollDao½Ó¿Ú¡£ÔÚ°ü¡°cn.bmxt.dao.impl¡±Öд´½¨EnrollDao½Ó¿ÚµÄʵÏÖÀàEnrollDaoImpl£¬ÆäʵÏÖ´úÂëÈç5.4-15Ëùʾ¡£ ¡¾´úÂë5.4-15¡¿Îļþ/src/cn.bmxt.dao.impl/EnrollDaoImpl.java£¬°æ±¾0.01¡£ 01 package cn.bmxt.dao.impl; 02 import cn.bmxt.dao.EnrollDao; 03 import cn.bmxt.dao.common.impl.BaseDaoImpl; 04 import cn.bmxt.entity.Enroll; 05 public class EnrollDaoImpl extends BaseDaoImpl implements EnrollDao { 06 } 8. ´´½¨GradeDao½Ó¿Ú¼°ÆäʵÏÖÀà GradeDao½Ó¿Ú¼Ì³ÐͨÓõÄBaseDao½Ó¿Ú£¬²¢ÌṩBaseDao½Ó¿ÚÖзºÐͲÎÊýT´ú±íµÄʵ¼ÊÀà ÐÍGrade¡£ÔÚ°ü¡°cn.bmxt.dao¡±Öд´½¨GradeDao½Ó¿Ú£¬½Ó¿ÚµÄ´úÂëÈç5.4-16Ëùʾ¡£¡¾´úÂë5.4-16¡¿Îļþ/src/cn.bmxt.dao/GradeDao.java£¬°æ±¾0.01¡£ 01 package cn.bmxt.dao; 02 import cn.bmxt.dao.common.BaseDao; 03 import cn.bmxt.entity.Grade; 04 public interface GradeDao extends BaseDao { 05 } GradeDao½Ó¿ÚµÄʵÏÖÀàÐèÒª¼Ì³Ð BaseDao½Ó¿ÚµÄʵÏÖÀà BaseDaoImpl£¬Ìṩ BaseDaoImplÀàÖеķºÐͲÎÊýT´ú±íµÄʵ¼ÊÀàÐÍGrade£¬Í¬Ê±ÊµÏÖGradeDao½Ó¿Ú¡£ÔÚ°ü¡°cn.bmxt.dao.impl¡±Öд´½¨GradeDao½Ó¿ÚµÄʵÏÖÀàGradeDaoImpl£¬ÆäʵÏÖ´úÂëÈç5.4-17Ëùʾ¡£ ¡¾´úÂë5.4-17¡¿Îļþ/src/cn.bmxt.dao.impl/GradeDaoImpl.java£¬°æ±¾0.01¡£ 01 package cn.bmxt.dao.impl; 02 import cn.bmxt.dao.GradeDao; 03 import cn.bmxt.dao.common.impl.BaseDaoImpl; 04 import cn.bmxt.entity.Grade; 05 public class GradeDaoImpl extends BaseDaoImpl implements GradeDao { 06 } 9. ´´½¨LogDao½Ó¿Ú¼°ÆäʵÏÖÀà LogDao½Ó¿Ú¼Ì³ÐͨÓõÄBaseDao½Ó¿Ú£¬²¢ÌṩBaseDao½Ó¿ÚÖзºÐͲÎÊýT´ú±íµÄʵ¼ÊÀàÐÍ Log¡£ÔÚ°ü¡°cn.bmxt.dao¡±Öд´½¨LogDao½Ó¿Ú£¬½Ó¿ÚµÄ´úÂëÈç5.4-18Ëùʾ¡£ ¡¾´úÂë5.4-18¡¿Îļþ/src/cn.bmxt.dao/LogDao.java£¬°æ±¾0.01¡£ 01 package cn.bmxt.dao; 02 import cn.bmxt.dao.common.BaseDao; 03 import cn.bmxt.entity.Log; 04 public interface LogDao extends BaseDao { 05 } LogDao½Ó¿ÚµÄʵÏÖÀàÐèÒª¼Ì³ÐBaseDao½Ó¿ÚµÄʵÏÖÀàBaseDaoImpl£¬ÌṩBaseDaoImplÀàÖеķºÐͲÎÊýT´ú±íµÄʵ¼ÊÀàÐÍLog£¬Í¬Ê±ÊµÏÖLogDao½Ó¿Ú¡£ÔÚ°ü¡°cn.bmxt.dao.impl¡±Öд´½¨ LogDao½Ó¿ÚµÄʵÏÖÀàLogDaoImpl£¬ÆäʵÏÖ´úÂëÈç5.4-19Ëùʾ¡£ ¡¾´úÂë5.4-19¡¿Îļþ/src/cn.bmxt.dao.impl/LogDaoImpl.java£¬°æ±¾0.01¡£ 01 package cn.bmxt.dao.impl; 02 import cn.bmxt.dao.LogDao; 03 import cn.bmxt.dao.common.impl.BaseDaoImpl; 04 import cn.bmxt.entity.Log; 05 public class LogDaoImpl extends BaseDaoImpl implements LogDao { 06 } 10. ´´½¨DocDao½Ó¿Ú¼°ÆäʵÏÖÀà DocDao½Ó¿Ú¼Ì³ÐͨÓõÄBaseDao½Ó¿Ú£¬²¢ÌṩBaseDao½Ó¿ÚÖзºÐͲÎÊýT´ú±íµÄʵ¼ÊÀàÐÍ Doc¡£ÔÚ°ü¡°cn.bmxt.dao¡±Öд´½¨DocDao½Ó¿Ú£¬½Ó¿ÚµÄ´úÂëÈç5.4-20Ëùʾ¡£ ¡¾´úÂë5.4-20¡¿Îļþ/src/cn.bmxt.dao/DocDao.java£¬°æ±¾1.0¡£ 01 package cn.bmxt.dao; 02 import cn.bmxt.dao.common.BaseDao; 03 import cn.bmxt.entity.Doc; 04 public interface DocDao extends BaseDao { 05 } DocDao½Ó¿ÚµÄʵÏÖÀàÐèÒª¼Ì³ÐBaseDao½Ó¿ÚµÄʵÏÖÀàBaseDaoImpl£¬ÌṩBaseDaoImplÀàÖеķºÐͲÎÊýT´ú±íµÄʵ¼ÊÀàÐÍDoc£¬Í¬Ê±ÊµÏÖDocDao½Ó¿Ú¡£ÔÚ°ü¡°cn.bmxt.dao.impl¡±Öд´½¨ DocDao½Ó¿ÚµÄʵÏÖÀàDocDaoImpl£¬ÆäʵÏÖ´úÂëÈç5.4-21Ëùʾ¡£ ¡¾´úÂë5.4-21¡¿Îļþ/src/cn.bmxt.dao.impl/DocDaoImpl.java£¬°æ±¾1.0¡£ 01 package cn.bmxt.dao.impl; 02 import cn.bmxt.dao.DocDao; 03 import cn.bmxt.dao.common.impl.BaseDaoImpl; 04 import cn.bmxt.entity.Doc; 05 public class DocDaoImpl extends BaseDaoImpl implements DocDao { 06 } 5.5 DAO¹¤³§ÀàÉè¼Æ ÊÓ Æµ ½² ½â ÔÚJavaÏîÄ¿¿ª·¢Ê±£¬³£³£»áÉæ¼°Ä³¸öÀàÐÍϵIJ»Í¬×ÓÀàÐ͵ĶÔÏó´´½¨£¬Èç¹ûÔÚÓ¦ÓóÌÐòÖÐÖ±½ÓʹÓÃnewÔËËã·û´´½¨ÕâЩ¶ÔÏ󣬽«²»±ãÓÚ´úÂëµÄÐÞ¸ÄÓ붯̬À©Õ¹¡£¿ÉÒÔ²ÉÓù¤³§·½·¨Ä£Ê½À´ÓÅ»¯´úÂëÉè¼Æ£¬Í¨¹ý½«´´½¨Ä³¸öÀàµÄ×ÓÀà¶ÔÏóËùÐèµÄÀàÐÍÐÅÏ¢´æ·ÅÔÚXML¡¢propertiesµÈÅäÖÃÎļþÖУ¬ÔÚ³ÌÐòÖÐÓÉij¸ö±»³ÆÎª¹¤³§µÄÀà¸ù¾ÝÏà¹ØÅäÖÃÐÅÏ¢À´´´½¨²¢¹ÜÀí¶ÔÏó¡£ÕâÖÖģʽ¿ÉÒÔ½µµÍ³ÌÐòÖ®¼äµÄñîºÏ£¬µ±ÏµÍ³ÖÐÐèÒªÔö¼ÓеÄ×ÓÀà½øÐж¯Ì¬À©Õ¹Ê±£¬²»±ØÐÞ¸ÄÒÑÓеijÌÐò´úÂ룬ֻÐèÒªÐÞ¸ÄÅäÖÃÎļþ¼´¿É¡£ ±¾ÏµÍ³ÔÚÉè¼Æ¿ª·¢Ê±£¬ÉϲãÒµÎñÂß¼­ÊÇÃæÏò DAO²ã×é¼þ½øÐпª·¢£¬Ò²¾ÍÊÇÃæÏòʵÌåÀà DAO½Ó¿Ú½øÐбà³Ì¡£Êµ¼ÊÉÏ£¬³ÌÐòÖеÄʵÌåÀàDAO½Ó¿ÚÒýÓõÄÊÇÆäʵÏÖÀà¶ÔÏ󣬿ÉÒÔ½«ÊµÌåÀàDAO½Ó¿ÚµÄʵÏÖÀà¶ÔÏóµÄ´´½¨¹¤×÷½»ÓÉÒ»¸ö DAO¹¤³§ÀàÀ´Í³Ò»Íê³É¡£´´½¨ÕâЩ¶ÔÏóËùÐèµÄÐÅÏ¢¿ÉÒÔÅäÖÃÔÚÒ»¸öpropertiesÊôÐÔÎļþÖУ¬ÓÉÓû§ÌṩÐèҪʹÓõÄʵÌåÀàDAO½Ó¿ÚÃû³Æ£¬ DAO¹¤³§Àà¾ÍÄܹ»¸ù¾ÝÅäÖÃÎļþÖеÄÐÅÏ¢¶ÔÓ¦µØ´´½¨³öËùÐèµÄ DAO½Ó¿ÚµÄʵÏÖÀà¶ÔÏó¡£Òò´Ë£¬ÔÚÊôÐÔÎļþÖÐÐèÒªÅäÖÃʵÌåÀà DAO½Ó¿ÚÃû³ÆÓëʵÌåÀà DAO½Ó¿ÚµÄʵÏÖÀàÖ®¼äµÄ¶ÔÓ¦¹ØÏµ£¬ÆäÖÐʵÌåÀàDAO½Ó¿ÚµÄʵÏÖÀà¿ÉÒÔʹÓÃÀàµÄÈ«ÏÞ¶¨Ãû³Æ±íʾ£¬±ãÓÚ DAO¹¤³§ÀàʹÓÃJava·´ÉäÀ´´´½¨ÊµÀý¶ÔÏó¡£ 1. ´´½¨ÊôÐÔÅäÖÃÎļþ Ê×ÏÈ´´½¨Ò»¸öÊôÐÔÅäÖÃÎļþ£¬ÔÚsrcĿ¼ÉÏÓÒ»÷£¬ÔÚµ¯³öµÄ²Ëµ¥ÖÐÑ¡Ôñ¡°New¡±¡ú ¡°File¡±£¬È»ºó½«Ð´´½¨µÄFileÃüÃûΪ¡°dao.properties¡±£¬½Ó×ű༭Õâ¸öÊôÐÔÎļþ£¬ÔÚÆäÖÐÅäÖÃʵÌåÀàDAO½Ó¿ÚÃû³ÆÓëʵÌåÀàDAO½Ó¿ÚµÄʵÏÖÀàÖ®¼äµÄ¶ÔÓ¦¹ØÏµ£¬ÅäÖôúÂëÈç5.5-01Ëùʾ¡£ ¡¾´úÂë5.5-01¡¿Îļþ/src/dao.properties£¬°æ±¾1.0¡£ 01 SiteDao=cn.bmxt.dao.impl.SiteDaoImpl 02 AdminDao=cn.bmxt.dao.impl.AdminDaoImpl 03 PhaseDao=cn.bmxt.dao.impl.PhaseDaoImpl 04 MajorDao=cn.bmxt.dao.impl.MajorDaoImpl 05 CourseDao=cn.bmxt.dao.impl.CourseDaoImpl 06 StudentDao=cn.bmxt.dao.impl.StudentDaoImpl 07 EnrollDao=cn.bmxt.dao.impl.EnrollDaoImpl 08 GradeDao=cn.bmxt.dao.impl.GradeDaoImpl 09 LogDao=cn.bmxt.dao.impl.LogDaoImpl 10 DocDao=cn.bmxt.dao.impl.DocDaoImpl 2. DAO¹¤³§ÀàµÄ´úÂëʵÏÖ DAO¹¤³§ÀàÓÃÓÚÉú²ú¹ÜÀíʵÌåÀàDAO½Ó¿ÚµÄʵÏÖÀà¶ÔÏó£¬Ëüͨ¹ý¶ÁÈ¡¡°dao.properties¡±ÎļþÖеÄÅäÖÃÐÅÏ¢£¬È»ºóÀûÓÃJava·´Éä¼¼ÊõÀ´´´½¨ÐèÒªµÄ¶ÔÏóʵÀý¡£ÔÚ°ü¡°cn.bmxt.dao. common¡±Öд´½¨¹¤³§ÀàDaoFactory£¬ÆäÉè¼Æ´úÂëÈç5.5-02Ëùʾ¡£ ¡¾´úÂë5.5-02¡¿Îļþ/src/cn.bmxt.dao.common/DaoFactory.java£¬°æ±¾1.0¡£ 01 package cn.bmxt.dao.common; 02 import java.io.IOException; 03 import java.util.Collections; 04 import java.util.HashMap; 05 import java.util.Map; 06 import java.util.Properties; 07 public class DaoFactory { 08 private DaoFactory() {} 09 private static .nal Map cache = Collections. synchronizedMap(new HashMap()); 10 private static .nal Properties props = new Properties(); 11 static { 12 try { 13 props.load(Thread.currentThread().getContextClassLoader(). getResourceAsStream("dao.properties")); 14 } catch (IOException e) { 15 System.err.println("ÔÚ classpathÏÂδÕÒµ½ dao.propertiesÅäÖÃÎļþ£¡ "); 16 e.printStackTrace(); 17 } 18 } 19 public static Object getInstance(String daoName) { 20 Object obj = cache.get(daoName); 21 if (obj == null) { 22 String className = props.getProperty(daoName); 23 if (className == null || "".equals(className)) { 24 throw new RuntimeException("Ö¸¶¨µÄ DAOʵÏÖÀàÈ«ÏÞ¶¨ÃûÔÚ dao. propertiesÖÐδÕÒµ½£¡ "); 25 } 26 try { 27 obj = Class.forName(className).newInstance(); 28 cache.put(daoName, obj); 29 } catch (Exception e) { 30 throw new RuntimeException("¼ÓÔØÖ¸¶¨ DAOʵÏÖÀàµÄ×Ö½Ú³öÏÖÒì³££¡ ", e); 31 } 32 } 33 return obj; 34 } 35 } ´úÂë5.5-02˵Ã÷ÈçÏ£º £¨1£©µÚ08ÐУ¬Ë½Óл¯¹¹Ôì·½·¨£¬²»ÔÊÐíÓû§´´½¨DaoFactoryÀàµÄʵÀý¶ÔÏó¡£DaoFactoryÀà½ö¶ÔÍâÌṩһ¸ö¾²Ì¬µÄ¹¤³§·½·¨£¬Ö±½ÓʹÓÃÀàÃûµ÷Óü´¿É¡£ £¨2£©µÚ09ÐУ¬Í¨¹ýµ÷ÓÃCollectionsÀàµÄ¾²Ì¬·½·¨synchronizedMap»ñȡһ¸öÖ§³Öͬ²½£¨Ḭ̈߳²È«£©µÄÓ³ÉäMap£¬×÷ΪDaoFactoryÀàËùά»¤µÄDAOʵÏÖÀàʵÀýµÄ»º´æcache¡£ £¨3£©µÚ10ÐУ¬ÉùÃ÷Ò»¸ö¾²Ì¬µÄ˽Óл¯³£Á¿props£¬ÓÃÓÚ±£´æ´Ó¡°dao.properties¡±ÎļþÖжÁÈ¡µÄÅäÖÃÐÅÏ¢¡£ £¨4£©µÚ11ÐÐ~µÚ18ÐÐÊÇÒ»¸ö¾²Ì¬´úÂë¿é£¬½«¡°dao.properties¡±ÎļþÖеÄÅäÖÃÐÅÏ¢¼ÓÔØµ½¾²Ì¬³£Á¿propsÖС£µÚ13ÐдúÂëÊ×ÏÈ»ñÈ¡µ±Ç°Ïß³ÌÉÏÏÂÎĵÄÀà¼ÓÔØÆ÷ClassLoader£¬È»ºóµ÷ÓÃgetResourceAsStream·½·¨»ñÈ¡Îļþ¡°dao.properties¡±µÄÊäÈëÁ÷£¬×îºóµ÷ÓÃPropertiesÀàµÄ load·½·¨¼ÓÔØÕâ¸öÊäÈëÁ÷£¬Íê³É¡°dao.properties¡±ÎļþµÄ¶ÁÈ¡¹¤×÷¡£µÚ15ÐУ¬µ±¶ÁÈ¡¡°dao. properties¡±Îļþ²úÉúÒ쳣ʱ£¬Êä³ö¶ÔÓ¦µÄ´íÎóÌáʾÐÅÏ¢¡£ £¨5£©µÚ19ÐÐ~µÚ34ÐÐÊÇÒ»¸ö¾²Ì¬µÄ¹¤³§·½·¨getInstance£¬¸Ã·½·¨¸ù¾Ý´«µÝµÄDAO½Ó¿ÚÃû³Æ·µ»ØÒ»¸öÓëÖ®¶ÔÓ¦µÄʵÏÖÀàµÄʵÀý¶ÔÏó¡£µÚ 20ÐУ¬Ê×Ïȸù¾ÝÓû§´«µÝµÄ DAO½Ó¿ÚÃû³ÆÔÚ»º´æcacheÖвéÕÒʵÀý¶ÔÏ󣬽ô½Ó×ÅÔÚµÚ 21ÐнøÐÐÅжϣ¬Èç¹û»º´æÖдæÔÚËùÐèµÄʵÀý¶ÔÏó£¬Ö±½ÓÖ´ÐеÚ33ÐдúÂë·µ»Ø¸ÃʵÀý¶ÔÏó¼´¿É£¬·ñÔòÖ´ÐеÚ22ÐÐ~µÚ31ÐеĴúÂë¿é£¬Õâ¸ö´úÂë¿éÖеÄ×÷ÓþÍÊÇ´´½¨DAOʵÏÖÀàµÄʵÀý¶ÔÏó²¢´æÈëµ½»º´æcacheÖС£µÚ22ÐдúÂë»á¸ù¾ÝÓû§´«µÝµÄDAO½Ó¿ÚÃû³Æ¼ìË÷ÊôÐÔÎļþÖÐÊÇ·ñÅäÖÃÁ˶ÔÓ¦µÄ DAOʵÏÖÀ࣬Èç¹ûδÅäÖ㬾ÍÔÚµÚ 24ÐÐÖÐÅ׳öÒì³££¬·ñÔò¾Í»á»ñÈ¡ÅäÖõÄDAOʵÏÖÀàµÄÈ«ÏÞ¶¨Ãû³Æ£¬È»ºóÔÚµÚ27ÐеĴúÂëÖÐÀûÓÃJava·´Éä¼¼Êõ´´½¨³öDAOʵÏÖÀàµÄʵÀý¶ÔÏó¡£½Ó×ŵÚ28ÐдúÂ뽫Õâ¸öʵÀý¶ÔÏóÌí¼Óµ½»º´æcacheÖУ¬³ÌÐò×îÖÕ»áÌø³ö´úÂë¿éÖ´ÐеÚ33ÐдúÂë·µ»ØÐ´´½¨µÄʵÀý¶ÔÏó¡£µ±Óû§µÚÒ»´Îµ÷ÓÃgetInstance·½·¨»ñȡij¸öDAOʵÏÖÀàµÄʵÀýʱ£¬³ÌÐò»á´´½¨Ò»¸öеÄʵÀý¶ÔÏó²¢´æÈ뻺´æ£»µ±Óû§ºóÐøÔÙµ÷Óà getInstance·½·¨ÇëÇó»ñȡͬһ¸öDAOʵÏÖÀàµÄʵÀýʱ£¬½«»á·µ»Ø»º´æÖеÄʵÀý¶ÔÏ󣬴Ӷø±£Ö¤ÁËÿһ¸öDAOʵÏÖÀàµÄʵÀý¶ÔÏóÔÚϵͳÔËÐÐʱ½ö´æÔÚÒ»¸ö¡£ÕâÒ²Êǵ¥ÀýģʽµÄÒ»ÖÖʵÏÖ·½Ê½£¬¿ÉÒÔ½ÚԼϵͳ×ÊÔ´£¬Ìá¸ßϵͳµÄÐÔÄÜ¡£ ÎÒÃÇ¿ÉÒÔ±àд´úÂëÀ´¶ÔDaoFactoryÀàÖеŤ³§·½·¨½øÐвâÊÔ£¬ÔÚ¡°cn.bmxt.util¡±°üÏ嵀 JunitTestÀàÖÐÐÂÔöÒ»¸öµ¥Ôª²âÊÔ·½·¨testDaoFactory£¬²âÊÔ´úÂëÈç5.5-03Ëùʾ¡£ ¡¾´úÂë5.5-03¡¿DaoFactoryÀàÖй¤³§·½·¨µÄ²âÊÔ´úÂ룬´úÂëλÖãº/src/cn.bmxt.util/ JunitTest.java¡£ 01 @Test 02 public void testDaoFactory(){ 03 SiteDao siteDao = (SiteDaoImpl) DaoFactory.getInstance("SiteDao"); 04 SiteDao siteDao2 = (SiteDaoImpl) DaoFactory.getInstance("SiteDao"); 05 System.out.println(siteDao); 06 System.out.println(siteDao2); 07 } ´úÂë5.5-03ÖУ¬µÚ03Ðк͵Ú04ÐÐÏȺóÁ½´Îµ÷ÓÃDaoFactoryÀàµÄ¹¤³§·½·¨getInstanceÀ´»ñÈ¡ SiteDao½Ó¿ÚʵÏÖÀàµÄʵÀý¶ÔÏ󣬲¢·Ö±ð´òÓ¡£¬½á¹ûÈçÏÂËùʾ£¬ËµÃ÷ʹÓÃDaoFactoryÀàµÄ¹¤³§·½·¨»ñÈ¡µÄʵÀý¶ÔÏóÊÇͬһ¸ö¡£ 01 siteDao = cn.bmxt.dao.impl.SiteDaoImpl@3581c5f3 02 siteDao2 = cn.bmxt.dao.impl.SiteDaoImpl@3581c5f3