ibatis模块化开发
项目已经做完一段时间了,蓦然回首中,发现项目在开发模块化方面做的很好,包括对ibatis的sqlMap以及它的映射文件全部进行了模块化开发,看起来一目了然,自然清新,和大家分享一下。
前言:
首先需要把sqlMap文件全部独立出来,怎么样既与DAO相连,也能够看着是独立于Java代码之外的呢。我们需要建立一个source folder,命名为sqlmap,只要sqlMapConfig配置文件、映射文件的包名和Java代码的DAO的包名保持一致就OK,就能够操作同一个包一样,虽然它们处于不同的sourcefolder里面。【结构截图见附件】
一般的话,大家可能都会只写一个sqlMapConfig配置文件,把所有的映射文件全部都放它里面,如果项目大的话,会有多少映射文件啊,效果当然不好。这样,我们也需要把sqlMapConfig进行模块化,如:sqlMapConfig-XXX.xml,那么怎么调用它,接下来就是见证奇迹的时刻....
过程:
建立一个静态的sqlMapClientManager类,对sqlMapClient和sqlMapConfig-XXX.xml进行管理,废话说完,贴上简短代码,大家就清楚了。
private static Hashtable<String,SqlMapClient> sqlMapClients = new Hashtable<String,SqlMapClient>(); /** * 获取对应数据库的SqlMapClient * 前提:有对应数据库的sqlMapConfig,命名规则为:sqlMapConfig-模块名.xml * @param dbName 模块名 * @return 异常时返回null */ public static SqlMapClient getSqlMapClient(String dbName){ SqlMapClient sqlMap = sqlMapClients.get(dbName); if(sqlMap==null){ sqlMap = buildSqlMapClient(dbName); if(sqlMap!=null){ sqlMapClients.put(dbName, sqlMap); } } return sqlMap; } /** * 构建SqlMapClient * @param dbName 模块名 * @return * @throws IOException */ private static SqlMapClient buildSqlMapClient(String dbName){ SqlMapClient sqlMap = null; try{ String resource ="com/test/common/dao/sql/sqlMapConfig-"+dbName+".xml"; Reader reader = Resources.getResourceAsReader(resource); sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader); }catch(Exception e){ log.error(e); } return sqlMap; }
我们可以根据sqlMapClientManager的getSqlMapClient(String dbName)方法获取不同模块的SqlMapClient,然后在DAO中进行增删查改。如:
//根据模块名获取sqlMapClient对数据库操作 SqlMapClient sqlMapClient = SqlMapClientManager.getSqlMapClient("web"); try { list=(ArrayList<CityBean>)sqlMapClient.queryForList("Base_City.get",null); }catch(Exception e){}
相关推荐
zyjj 2020-07-04
bluet00 2020-06-25
godfather 2020-06-13
lt云飞扬gt 2020-06-09
旗木卡卡西 2020-06-02
徐悦TechBlog 2020-05-27
liuyang000 2020-03-05
xuanlvhaoshao 2020-02-21
ItBJLan 2020-02-20
tanrong 2020-02-15
gwn00 2020-02-01
一对儿程序猿 2020-01-18
xuanlvhaoshao 2020-01-02
gwn00 2020-01-09
tanrong 2019-12-22
tanrong 2019-12-16
一对儿程序猿 2019-11-10