MiniDao SQL分离写法 === ### 第一步: 定义接口 EmployeeDao.java (不需要实现) ``` @Repository public interface EmployeeDao { @Sql("select * from employee where id = :id") Employee get(@Param("id") String id); int update(@Param("employee") Employee employee); void insert(@Param("employee") Employee employee); @ResultType(Employee.class) public MiniDaoPage<Employee> getAll(@Param("employee") Employee employee,@Param("page") int page,@Param("rows") int rows); @Sql("delete from employee where id = :id") public void delete(@Param("id") String id); } ``` minidao 代理机制会自动实现接口,将实现bean注入到spring容器里面,这个比mybatis要简易很多。 ### 第二步:创建接口方法对应SQL文件 SQL文件目录规则,与minidao接口保持相同目录(或者放在对应resource目录下) SQL文件命名规则:{Dao接口名}_{方法名}.sql ![](https://img.kancloud.cn/d0/f7/d0f7964c2ac1ffdd8cdc4638ae02dd00_397x328.png) ### 第三步:编写SQL SQL文件采用模板语言Freemarker作为解析引擎,可以灵活运用,甚至可以写脚本语言,宏处理等; **示例:** ``` 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> ```