1. 程式人生 > >MiniDao 比Mybatis還靈活實用的J2EE 持久層輕量級解決方案

MiniDao 比Mybatis還靈活實用的J2EE 持久層輕量級解決方案

               

MiniDao

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自動生成

介面和SQL檔案對應目錄

github

介面定義[EmployeeDao.java]

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(*) FROM employee")Integer getCount();@Arguments("employee")int update(Employee employee);@Arguments("employee")void insert(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>

測試程式碼

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

技術交流