跳到主要内容

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

第三步:编写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>