企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
## 执行模板SQL 模板SQL通常放到文件里单独管理,这样的好处是易于维护。同时,模板SQL具备很多函数,容易实现复杂的SQL生成。当然模板SQL可以在java里编写和执行 - public <T> List<T> execute(String sqlTemplate,Class<T> clazz, Object paras), 查询,返回查询结果列表 - public <T> List<T> execute(String sqlTemplate,Class<T> clazz, Map paras) 参数是Map - public int executeUpdate(String sqlTemplate,Object paras) 返回成功执行条数 - public int executeUpdate(String sqlTemplate,Map paras) 返回成功执行条数 ```java String sql = "select * from sys_user where department_id=#{id} and name=#{name}"; UserEntity paras = new UserEntity(); paras.setDepartmentId(1); paras.setName("lijz"); List<UserEntity> list = sqlManager.execute(sql,UserEntity.class,paras); ``` 或者 ```java //或者使用Map作为参数 String sql = "select * from sys_user where department_id=#{myDeptId} and name=#{myName}"; Map paras = new HashMap(); paras.put("myDeptId",1); paras.put("myName","lijz"); List<UserEntity> list = sqlManager.execute(sql,UserEntity.class,paras); ``` paras 是一个map,key的定义应该同变量名。 如果你有一个pojo作为参数,你可以使用`_root` 作为key,这样sql模版找不到名称对应的属性值的时候,会寻找`_root` 对象,如果存在,则取其同名属性。 ```java //或者使用Map作为参数 String sql = "select * from sys_user where department_id=#{departmentId} and name=#{name}"; Map paras = new HashMap(); UserEntity user = new UserEntity(); user.setDepartmentId(1); parars.put("name","lijz"); paras.put("_root",user) List<UserEntity> list = sqlManager.execute(sql,UserEntity.class,paras); ``` 模板提供了很多函数和表达式,方便生成复杂的sql ```java String sql = "select * from sys_user where id in ( #{join(ids)} )"; List list = Arrays.asList(1,2,3,4,5); Map paras = new HashMap(); paras.put("ids", list); List<UserEntity> users = sqlManager.execute(sql, UserEntity.class, paras); ``` 这里,join函数会输出,并记录各个变量分别是1,2,3,4,5 ``` ?,?,?,?,? ``` 或者一个较为复杂的模板语句(更常见的复杂的sql维护在markdown文件里,后面章节会说明) ```java //使用Beetl模板语句 String sql = "select * from sys_user where 1=1 \n" + "-- @if(isNotEmpty(myDeptId)){\n" + " and department_id=#{myDeptId}\t\n" + "-- @}\n" + "and name=#{myName}"; Map paras = new HashMap(); paras.put("myDeptId",1); paras.put("myName","lijz"); List<UserEntity> list = sqlManager.execute(sql,UserEntity.class,paras); ```