自定义SQL写法
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; @Autowired protected NamedParameterJdbcTemplate namedJdbcTemplate; MapSqlParameterSource mapSqlParameterSource = new MapSqlParameterSource() .addValue("failedAttempts", user.getFailedAttempts()) .addValue("lockedAt", user.getLockedAt()) .addValue("id", user.getId()); namedJdbcTemplate.update("update user u set u.failed_attempts = :failedAttempts, u.locked_at =:lockedAt where u.id = :id", mapSqlParameterSource);
多条件组合查询写法
Example queryExample = new Example(UserActiveCode.class); Example.Criteria criteria = queryExample.createCriteria(); criteria.andEqualTo("activeId", code); criteria.andEqualTo("userId", userId); UserActiveCode userActiveCode = userActiveCodeDao.selectOneByExample(queryExample); 注意:queryExample也可以用MapSqlParameterSource参数代替
分页模板
public class PageResult<T> extends BaseResult<T> { private Integer pageSize = 20; private Integer pageNo = 0; private Integer totalPageCount = 0; private Integer record = 0; private Integer lastPage = 0; public PageResult() { } public PageResult(int pageNo, int pageSize, int record, T data) { this.wrapPageResult(pageNo, pageSize, record, data); } public void setTotalPageCount() { int totalP = this.record % this.getPageSize() == 0 ? this.record / this.getPageSize() : this.record / this.getPageSize() + 1; this.totalPageCount = totalP; } public void setRecord(Integer record) { this.record = record; this.setTotalPageCount(); } public void wrapPageResult(int pageIndex, int pageSize, int record, T data) { if (record != 0) { this.record = record; super.setData(data); this.pageNo = this.pageNo; this.pageSize = pageSize; this.totalPageCount = (record - 1) / pageSize + 1; } } public Integer getPageSize() { return this.pageSize; } public Integer getPageNo() { return this.pageNo; } public Integer getTotalPageCount() { return this.totalPageCount; } public Integer getRecord() { return this.record; } public Integer getLastPage() { return this.lastPage; } public void setPageSize(Integer pageSize) { this.pageSize = pageSize; } public void setPageNo(Integer pageNo) { this.pageNo = pageNo; } public void setTotalPageCount(Integer totalPageCount) { this.totalPageCount = totalPageCount; } public void setLastPage(Integer lastPage) { this.lastPage = lastPage; } }
public PageResult<List<ShoppingInfo>> getPurchaseOder(String id, OrderGetForm form) { String querySql = "select *"; String countSql = " select count(id) "; String whereSql = " from shopping_info "; whereSql += " where user_trade_id = :id"; whereSql += " order by id desc"; Map<String, Object> paramMap = new HashMap<>(); paramMap.put("id", id); String pageSql = " limit " + form.getPageNo() * form.getPageSize() + "," + form.getPageSize(); List<ShoppingInfo> pageList = namedJdbcTemplate.query(querySql + whereSql + pageSql, paramMap, new BeanPropertyRowMapper(ShoppingInfo.class)); Integer count = namedJdbcTemplate.queryForObject(countSql + whereSql, paramMap, Integer.class); PageResult<List<ShoppingInfo>> pageResult = new PageResult<>(); pageResult.setRecord(count); pageResult.setPageNo(form.getPageNo()); pageResult.setPageSize(form.getPageSize()); pageResult.setData(pageList); return pageResult; }
注解写法
@Select(value = "select * from user_account where userId = #{userId}") UserAccount findByUserId(String userId); @Update(value = "update user_account set balance = balance - #{money} where user_id = #{userid} and balance - #{money} >= 0") Integer deductBalance(@Param("userid") String userid, @Param("money") Integer money);
调用存储过程
注解写法: @Select("call proc_attestation_counter(#{date})") @Options(statementType = StatementType.CALLABLE) Interger recountAttestationCounter(Date date); xml文件写法: <select id="procAttestationCounter" statementType="CALLABLE" parameterType="Date" resultType="Integer"> call proc_attestation_counter(#{date}) </select>