开发指南专题十四:JEECG微云快速开发平台MiniDao 介绍
开发指南专题十四:JEECG微云快速开发平台MiniDao 介绍
13.MiniDao 介绍
13.1.MiniDao简介及特征
MiniDao是Jeecg自己的持久化解决方案,具备了Hibernate实体维护和Mybaits SQL分离的两大优势。具有以下特征:
-
1.O/R mapping不用设置xml,零配置便于维护
-
2.不需要了解JDBC的知识
-
3.SQL语句和java代码的分离
-
4.可以自动生成SQL语句
-
5.接口和实现分离,不用写持久层代码,用户只需写接口,以及某些接口方法对应的sql 它会通过AOP自动生成实现类
-
6.支持自动事务处理和手动事务处理
-
7.支持与hibernate轻量级无缝集成
-
8.MiniDao整合了Hibernate+mybatis的两大优势,支持实体维护和SQL分离
-
9.SQL支持脚本语言
※向下兼容Hibernate实体维护方式,实体的增删改查SQL自动生成
第一步:接口定义[EmployeeDao.java]
@MiniDao
public interface EmployeeDao {
@Arguments("employee")
public List<Map>getAllEmployees(Employee employee);
@Arguments("empno")
Employee getEmployee(String empno);
@Arguments({"empno","name"})
MapgetMap(String empno,String name);
@Sql("SELECT count(*) FROMemployee")
Integer getCount();
@Arguments("employee")
intupdate(Employee employee);
@Arguments("employee")
voidinsert(Employee employee);
}
第二步:SQL文件[EmployeeDao_getAllEmployees.sql]
SELECT * FROM employee where 1=1
<#if employee.age ?exists>
and age = :employee.age
</#if>
<#if employee.name ?exists>
and name = :employee.name
</#if>
<#if employee.empno ?exists>
and empno = :employee.empno
</#if>
13.3.MiniDao接口配置
<!-- 注册MiniDao接口 -->
<bean class="org.jeecgframework.minidao.factory.MiniDaoBeanFactory">
<propertyname="packagesToScan">
<list>
<value>examples.dao.*</value>
</list>
</property>
</bean>
13.4测试代码
public class Client {
public static void main(String args[]) {
BeanFactory factory = new ClassPathXmlApplicationContext(
"applicationContext.xml");
EmployeeDao employeeDao = (EmployeeDao)factory.getBean("employeeDao");
Employee employee = new Employee();
List<Map> list =employeeDao.getAllEmployees(employee);
for(Mapmp:list){
System.out.println(mp.get("id"));
System.out.println(mp.get("name"));
System.out.println(mp.get("empno"));
System.out.println(mp.get("age"));
System.out.println(mp.get("birthday"));
System.out.println(mp.get("salary"));
}
}
}
环境:Spring3.X,Hibernate 3以上
MiniDao依赖:org.jeecgframework.minidao-1.2.1.jar
13.5.1.MiniDao与Spring集成
第一步:新建MiniDao的spring配置文件
文件名:spring-minidao.xml(可以自定义),只要让spring扫描到这个文件即可。
扫描方法一:
在web.xml中的spring监听器中扫描规则中包含spring-minidao.xml。
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-*.xml</param-value>
</context-param>
扫描方法二:
在spring的配置文件中引入spring-minidao.xml。
<import resource="classpath*:spring-minidao.xml" />
MiniDao配置详解
MiniDao对springJdbc的支持(MiniDao的核心基础配置)
<!-- MiniDao动态代理类 -->
<bean id="miniDaoHandler" class="org.jeecgframework.minidao.aop.MiniDaoHandler">
<!-- springjdbc,必须依赖 -->
<property name="jdbcTemplate" ref="jdbcTemplate"></property>
</bean>
<!-- 注册MiniDao接口 -->
<bean class="org.jeecgframework.minidao.factory.MiniDaoBeanFactory">
<property name="packagesToScan">
<list>
<!-- 可以以包名注册,自动扫描包下面的Dao接口 -->
<value>jeecg.cgreport.dao.*</value>
<value>jeecg.cgform.dao.*</value>
</list>
</property>
</bean>
13.5.2.MiniDao与Hibernate集成
前提是Hibernate已经由Spring容器管理,在MiniDao的配置文件中直接加入Hibernate支持即可。
<!-- Hibernate MiniDao -->
<bean id="genericBaseCommonDao"
<!-- 对hibernate实体通用操作的实现类 --> class="org.jeecgframework.minidao.hibernate.dao.impl.GenericBaseCommonDao">
<!-- hibernate的sessionFactory -->
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>