持久层编写语法规范和注意事项

接口示例:

@Model public interface Sm_Archives extends BaseModel { @Select("select * from ${this} where id=#{id} <if test='name==${name} and age==${age}'> and id in(1,2,3) </if> order by id desc") public List<Map<String,Object>> test(Map<String,Object> data); }

控制器示例:

public class testSc { @ModelResources public Sm_Archives sm_archives; public void test(Hocontext hocontext){ Map map = new HashMap<String,Object>(){{ put("id",123); }}; List<Map<String,Object>> m = sm_archives.test(map); System.out.println("=========="+m.get(0).get("title")); } }

接口规范:

  • 在接口文件中首先引入@Model标签;
  • 接口名称与对应的数据库表名保持一致。
  • 接口需要继承BaseModel类,该类中有基础sql便于对基础CRUD操作。

  • 自定义查询sql中引入@Select 注解;注解中填写自己编写的sql语句。
  • ${this}表示当前模型对应的数据库表,关联查询时除当前表必须用${this}表示外,其他表可直接写表全名。
  • 在判断时使用<if test=' ' ></if>块来判定if中的语句是否执行。
  • 判断句if规则:if中必须带有test=' '(把需要判断的字段以及值传入 test=' ' 中;且test中判断语句只决定示例中红色内容是否执行,且多判断语句用 and/or连接 );多个if判断只需在语句中添加多个if块。

控制器规范:

  • 在控制器中调用指定接口文件时,首先引入@ModelResources标签然后在声明引入接口名称(public Sm_Archives sm_archives);
  • 控制器中的返回类型必须和接口中返回类型保持一致。
  • Map使用规则:map中key,value使用<String,Object>结构; map中的key值需要和sql中对应。

注意事项:

  • if判断中只能用 "${}"不能使用预处理 "#{}"。
  • 传值map 中”数值类型”不能用”字符串类型”。
  • if判断中不能使用 "===" 恒等符号。
  • if判断中不能带有 ":"," ' ","`" , """ , "#this", "#root" , "#", "[", "{", "not", "+", "-", "~", "@", "new" 等特殊符号或保留字段。
本文档来自—microbee-http 丨 软件开发框架平台