🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 执行SQL SQLManager提供了直接执行JDBC SQL或者模板SQL的接口。当然,正如其他DAO工具,更为推荐的是在Mapper里执行,可以参考《Mapper》 - 查询 public <T> List<T> execute(SQLReady p,Class<T> clazz) 。SQLReady包含了需要执行的sql语句和参数,clazz是查询结果,如 ```java List<User> list = sqlManager.execute(new SQLReady("select * from sys_user where name=? and age = ?","xiandafu",18),User.class);) ``` clazz可以是POJO对象,也可以是Map,如果是POJO,则一一映射,如果是Map,则把结果集放到Map里 - public <T> PageResult<T> execute(SQLReady p, Class<T> clazz, PageRequest<T> pageReqeust) ```java String sql = "select * from sys_user where department_id=?"; PageRequest request = DefaultPageRequest.of(1,10); SQLReady sqlReady = new SQLReady(sql,new Object[]{1}); PageResult pr = sqlManager.execute(sqlReady,UserEntity.class,request); DefaultPageResult pageResult = (DefaultPageResult)pr; printPageResult(pageResult); public void printPageResult(DefaultPageResult pageResult){ System.out.println(pageResult.getPage()); System.out.println(pageResult.getPageSize()); System.out.println(pageResult.getTotalRow()); System.out.println(pageResult.getTotalPage()); System.out.println(pageResult.getList()); } ``` PageRequest和PageResult是用于BeetlSQL3里各种翻页的入参和出参,详情可以参考本章的《翻页查询》 - 更新 public int executeUpdate(SQLReady p) SQLReady包含了需要执行的sql语句和参数,返回更新结果 - public int[] executeBatchUpdate(SQLBatchReady batch) 批量更新(插入) - 直接使用Connection public <T> T executeOnConnection(OnConnection<T> call),使用者需要实现onConnection方法的call方法,如调用存储过程 ```java List<User> users = sql.executeOnConnection(new OnConnection<List<User>(){ @Override public List<User> call(Connection conn) throws SQLException { CallableStatement cstmt = conn.prepareCall("{ ? = call md5( ? ) }"); ResultSet rs = callableStatement.executeQuery(); return this.sqlManagaer.getDefaultBeanProcessors().toBeanList(rs,User.class); } }); ```