1、匯入必要的jar包:
2、spring配置檔案增加如下配置:
<!-- Hibernate工具欄配置-->
<bean id="miniDaoHiberCommonDao"
class="org.jeecgframework.minidao.hibernate.dao.impl.GenericBaseCommonDao">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>
<!-- MiniDao動態代理類 -->
<bean id="miniDaoHandler"class="org.jeecgframework.minidao.aop.MiniDaoHandler">
<property name="jdbcTemplate" ref="jdbcTemplate"></property>
</bean>
<!-- 註冊MiniDao介面,配置該bean,在web容器啟動時會掃描指定包下的含有@MiniDao註解的介面類,在使用到介面類的方法時會通過動態代理的方式來呼叫指定方法 -->
<bean class="org.jeecgframework.minidao.factory.MiniDaoBeanFactory">
<property name="packagesToScan">
<list>
<value>examples.dao.*</value>
</list>
</property>
</bean>
3、編寫資料介面層介面類(該類需增加@MiniDao註解才會被MiniDao所識別)的方式有3種:在其介面方法上增加@Arguments註解或@Sql註解,或者該類繼承MiniDaoSupportHiber<T>類的方式來告訴MiniDao的動態代理類需要以哪種方式來進行資料庫的互動。
1)@Arguments:如果使用該註解則需要增加對應的sql檔案,檔名為“介面名_方法名.sql”,該檔案的存放位置與介面類所在的包同級,包名為sql,該註解的數量與sql檔案的數量相同,如果有多個引數用逗號分隔,引數名稱應與sql檔案內的一致,在sql檔案中使用引數時應在引數前加“:”(冒號),如果該引數為實體類,則通過“.”(英文狀態下的點)導航其屬性,該sql檔案支援freemarker的語法。
2)@Sql:如果使用該註解則直接在該註解類寫sql程式碼,如果有引數則sql語句的寫法與@Arguments方式的sql檔案寫法相同。
3)繼承MiniDaoSupportHiber<T>類:可直接呼叫該父類的方法。
示例:
介面和SQL檔案對應目錄
介面定義[EmployeeDao.java]
@MiniDao
public interface EmployeeDao{
@Arguments("employee")
public List<Map>getAllEmployees(Employee employee);
@Arguments("empno")
Employee getEmployee(String empno);
@Arguments({"empno","name"})
Map getMap(String empno,String name);
@Sql("SELECT count(*) FROMemployee")
Integer getCount();
@Arguments("employee")
int update(Employee employee);
@Arguments("employee")
void insert(Employee employee);
}
SQL檔案[EmployeeDao_getAllEmployees.sql]
SELECT * FROM employee where1=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>
MiniDao介面配置
<!-- 註冊MiniDao介面 -->
<beanclass="org.jeecgframework.minidao.factory.MiniDaoBeanFactory">
<propertyname="packagesToScan">
<list>
<value>examples.dao.*</value>
</list>
</property>
</bean>
測試程式碼
public class Client {
public static voidmain(String args[]) {
BeanFactory factory = newClassPathXmlApplicationContext(
"applicationContext.xml");
EmployeeDao employeeDao = (EmployeeDao)factory.getBean("employeeDao");
Employee employee = new Employee();
List<Map> list = employeeDao.getAllEmployees(employee);
for(Map mp: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"));
}
}
}
介面定義[JeecgDemoDao.java]
@MiniDao
public interface JeecgDemoDaoextendsMiniDaoSupportHiber<JeecgDemo>{
@Sql("SELECT count(*)FROM jeecg_demo")
Integer getCount();
}
MiniDao介面配置
<!-- 註冊MiniDao介面 -->
<beanclass="org.jeecgframework.minidao.factory.MiniDaoBeanFactory">
<propertyname="packagesToScan">
<list>
<value>examples.dao.*</value>
</list>
</property>
</bean>
測試程式碼
public class Client {
public static voidmain(String args[]) {
BeanFactory factory = newClassPathXmlApplicationContext(
"applicationContext.xml");
JeecgDemoDaojeecgDemoDao = (JeecgDemoDao) factory.getBean("jeecgDemoDao");
jeecgDemoDao.getCount();
JeecgDemo s =jeecgDemoDao.getByIdHiber(JeecgDemo.class,"402880e7408f53a401408f53a5aa0000");
if(s!=null){
System.out.println(s.getUserName());
}
}
}