MiniDao普通專案整合方案

meetrice發表於2016-03-12

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());

       }

}

}

 

相關文章