最近运用MyBatis遇到各种奇葩问题,很是怀念之前用的持久层框架DbHelper,麻雀虽小但功能俱全,最最重要的是灵活地自定义编写SQL,给项目开发带来极大地方便。现在,特将此框架进行开源,以供有需之士。
DbHelper是支持定制化SQL、存储过程以及高级映射的高效性轻量级持久层框架,其主要就完成2件事情:封装JDBC操作;利用反射打通Java类与SQL语句之间的相互转换。DbHelper的主要设计目的是让我们对执行SQL语句时对输入输出的数据管理更加方便,高效快捷地写出SQL和方便地获取SQL的执行结果。经过长期的维护,目前DbHelper支持返回的数据类型基本囊括了各种项目所需,包括分页、POJO、Array、Map、List<String>、List<POJO>、List<Array>、List<Map>等等,以及其他各种数据类型。
使用方法:
- 克隆开源源码到本地maven项目,并打包到maven仓库,在具体项目中引入jar包:
1 <dependency> 2 <groupId>com.opensource</groupId> 3 <artifactId>dbhelper</artifactId> 4 <version>1.0.0</version> 5 </dependency>
- 在Spring配置文件里配置DbHelper:
1 <!-- 数据源配置,推荐使用Druid数据库连接池 --> 2 <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> 3 <property name="url" value="${db.jdbcUrl}" /> 4 <property name="username" value="${db.user}" /> 5 <property name="password" value="${db.password}" /> 6 <property name="driverClassName" value="${db.driverClass}" /> 7 <!-- 配置初始化大小、最小、最大 --> 8 <property name="initialSize" value="${db.initialSize}" /> 9 <property name="minIdle" value="${db.minIdle}" /> 10 <property name="maxActive" value="${db.maxActive}" /> 11 <!-- 配置获取连接等待超时的时间 --> 12 <property name="maxWait" value="${db.maxWait}" /> 13 <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 --> 14 <property name="timeBetweenEvictionRunsMillis" value="${db.timeBetweenEvictionRunsMillis}" /> 15 <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 --> 16 <property name="minEvictableIdleTimeMillis" value="${db.minEvictableIdleTimeMillis}" /> 17 <property name="validationQuery" value="SELECT 'x' from dual" /> 18 <property name="testWhileIdle" value="true" /> 19 <property name="testOnBorrow" value="false" /> 20 <property name="testOnReturn" value="false" /> 21 <!-- 打开PSCache,并且指定每个连接上PSCache的大小 --> 22 <property name="poolPreparedStatements" value="${db.poolPreparedStatements}" /> 23 <property name="maxPoolPreparedStatementPerConnectionSize" value="${db.maxPoolPreparedStatementPerConnectionSize}" /> 24 <!-- 配置监控统计拦截的filters --> 25 <property name="filters" value="stat,log4j" /> 26 <property name="proxyFilters"> 27 <list> 28 <ref bean="log-filter" /> 29 </list> 30 </property> 31 </bean> 32 33 <bean id="transactionAwareDataSourceProxy" class="org.springframework.jdbc.datasource.TransactionAwareDataSourceProxy"> 34 <constructor-arg ref="dataSource" /> 35 </bean> 36 <!-- 配置DbHelper --> 37 <bean id="dbHelper" class="com.opensource.dbhelp.DbHelper"> 38 <constructor-arg ref="transactionAwareDataSourceProxy" /> 39 </bean>
- 在DAO层注入DbHelper并使用:
1 public class TeseDao { 2 3 @Autowired 4 private DbHelper dbHelper; 5 6 /** 7 * 查询用户列表 8 * 9 * @param user 10 * @return 11 * @throws SQLException 12 */ 13 public List<User> getUserList(User user) throws SQLException { 14 StringBuilder sql = new StringBuilder(); 15 List<Object> params = new ArrayList<Object>(); 16 sql.append("SELECT TU.* FROM T_USER TU\n"); 17 sql.append(" WHERE 1 = 1\n"); 18 if (user != null && StringUtils.isNotEmpty(user.getName)) { 19 sql.append(" AND TU.NAME LIKE ?\n"); 20 params.add("%" + user.getName().trim() + "%"); 21 } 22 return dbHelper.getBeanList(sql.toString(), User.class, params.toArray()); 23 } 24 }
最后,奉上源代码GitHub地址,欢迎点击!
所有评论(0)