最近运用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>等等,以及其他各种数据类型。

使用方法:

  1. 克隆开源源码到本地maven项目,并打包到maven仓库,在具体项目中引入jar包:

  

1 <dependency>
2    <groupId>com.opensource</groupId>
3    <artifactId>dbhelper</artifactId>
4    <version>1.0.0</version>
5 </dependency>

 

  1. 在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>
  1. 在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地址,欢迎点击!

转载于:https://www.cnblogs.com/zonda/p/6695457.html

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐