结果集 Result
public class Result implements Serializable {
private static final long serialVersionUID = - 1421035628214955827L ;
private String code;
private String msg;
private Object data;
public static Result success ( ) {
Result result = new Result ( ) ;
result. setCode ( "0" ) ;
result. setMsg ( "success" ) ;
return result;
}
public static String buildSuccess ( ) {
Result result = new Result ( ) ;
result. setCode ( "0" ) ;
result. setMsg ( "success" ) ;
return JSONObject . toJSONString ( result) ;
}
public static Result success ( Object result) {
Result res = new Result ( "0" , "success" ) ;
res. setData ( result) ;
return res;
}
public static String buildSuccess ( Object result) {
Result res = new Result ( "0" , "success" ) ;
res. setData ( result) ;
return JSONObject . toJSONString ( res) ;
}
public static Result failure ( ) {
Result result = new Result ( ) ;
result. setCode ( "1" ) ;
result. setMsg ( "失败" ) ;
return result;
}
public static String buildFailure ( ) {
Result result = new Result ( ) ;
result. setCode ( "1" ) ;
result. setMsg ( "失败" ) ;
return JSONObject . toJSONString ( result) ;
}
public static Result failure ( String info) {
Result result = failure ( ) ;
result. setMsg ( info) ;
return result;
}
public static Result failure ( String code, String info) {
Result result = failure ( ) ;
result. setCode ( code) ;
result. setMsg ( info) ;
return result;
}
public static String buildFailure ( String info) {
Result result = failure ( ) ;
result. setMsg ( info) ;
return JSONObject . toJSONString ( result) ;
}
public String getCode ( ) {
return this . code;
}
public void setCode ( String code) {
this . code = code;
}
public String getMsg ( ) {
return this . msg;
}
public void setMsg ( String msg) {
this . msg = msg;
}
public Object getData ( ) {
return this . data;
}
public void setData ( Object data) {
this . data = data;
}
private Result ( String code, String msg, Object data) {
this . code = code;
this . msg = msg;
this . data = data;
}
private Result ( String code, String msg) {
this . code = code;
this . msg = msg;
}
private Result ( ) {
}
}
Constant 常量类
public class Constant {
public static final String PAGE = "page" ;
public static final String LIMIT = "limit" ;
public static final String ORDER_FIELD = "sidx" ;
public static final String ORDER = "order" ;
public static final String ASC = "asc" ;
public static final String WRAPPER = "ew" ;
}
SQL过滤
public class SQLFilter {
public static String sqlInject ( String str) {
if ( StringUtils . isBlank ( str) ) {
return null ;
}
str = StringUtils . replace ( str, "'" , "" ) ;
str = StringUtils . replace ( str, "\"" , "" ) ;
str = StringUtils . replace ( str, ";" , "" ) ;
str = StringUtils . replace ( str, "\\" , "" ) ;
str = str. toLowerCase ( ) ;
String [ ] keywords = { "master" , "truncate" , "insert" , "select" , "delete" , "update" , "declare" , "alter" , "drop" } ;
for ( String keyword : keywords) {
if ( str. indexOf ( keyword) != - 1 ) {
throw new RuntimeException ( "包含非法字符" ) ;
}
}
return str;
}
}
Query 查询参数 page / limit
import com. baomidou. mybatisplus. core. metadata. IPage ;
import com. baomidou. mybatisplus. core. metadata. OrderItem ;
import com. baomidou. mybatisplus. extension. plugins. pagination. Page ;
import org. apache. commons. lang3. StringUtils ;
public class Query < T > {
public IPage < T > getPage ( Map < String , Object > params) {
return this . getPage ( params, null , false ) ;
}
public IPage < T > getPage ( Map < String , Object > params, String defaultOrderField, boolean isAsc) {
long curPage = 1 ;
long limit = 10 ;
if ( params. get ( Constant . PAGE) != null ) {
curPage = Long . parseLong ( ( String ) params. get ( Constant . PAGE) ) ;
}
if ( params. get ( Constant . LIMIT) != null ) {
limit = Long . parseLong ( ( String ) params. get ( Constant . LIMIT) ) ;
}
Page < T > page = new Page < > ( curPage, limit) ;
params. put ( Constant . PAGE, page) ;
String orderField = SQLFilter . sqlInject ( ( String ) params. get ( Constant . ORDER_FIELD) ) ;
String order = ( String ) params. get ( Constant . ORDER) ;
if ( StringUtils . isNotEmpty ( orderField) && StringUtils . isNotEmpty ( order) ) {
if ( Constant . ASC. equalsIgnoreCase ( order) ) {
return page. addOrder ( OrderItem . asc ( orderField) ) ;
} else {
return page. addOrder ( OrderItem . desc ( orderField) ) ;
}
}
if ( StringUtils . isBlank ( defaultOrderField) ) {
return page;
}
if ( isAsc) {
page. addOrder ( OrderItem . asc ( defaultOrderField) ) ;
} else {
page. addOrder ( OrderItem . desc ( defaultOrderField) ) ;
}
return page;
}
public IPage < T > getPage ( Integer pageNo, Integer pageSize, String defaultOrderField, boolean isAsc) {
long curPage = 1 ;
long limit = 10 ;
if ( pageNo != null ) {
curPage = pageNo;
}
if ( pageSize != null ) {
limit = pageSize;
}
Page < T > page = new Page < > ( curPage, limit) ;
if ( StringUtils . isBlank ( defaultOrderField) ) {
return page;
}
if ( isAsc) {
page. addOrder ( OrderItem . asc ( defaultOrderField) ) ;
} else {
page. addOrder ( OrderItem . desc ( defaultOrderField) ) ;
}
return page;
}
}
分页工具类
public class PageUtils implements Serializable {
private static final long serialVersionUID = 1L ;
private int totalCount;
private int pageSize;
private int totalPage;
private int currPage;
private List < ? > list;
public PageUtils ( List < ? > list, int totalCount, int pageSize, int currPage) {
this . list = list;
this . totalCount = totalCount;
this . pageSize = pageSize;
this . currPage = currPage;
this . totalPage = ( int ) Math . ceil ( ( double ) totalCount/ pageSize) ;
}
public PageUtils ( IPage < ? > page) {
this . list = page. getRecords ( ) ;
this . totalCount = ( int ) page. getTotal ( ) ;
this . pageSize = ( int ) page. getSize ( ) ;
this . currPage = ( int ) page. getCurrent ( ) ;
this . totalPage = ( int ) page. getPages ( ) ;
}
public int getTotalCount ( ) {
return totalCount;
}
public void setTotalCount ( int totalCount) {
this . totalCount = totalCount;
}
public int getPageSize ( ) {
return pageSize;
}
public void setPageSize ( int pageSize) {
this . pageSize = pageSize;
}
public int getTotalPage ( ) {
return totalPage;
}
public void setTotalPage ( int totalPage) {
this . totalPage = totalPage;
}
public int getCurrPage ( ) {
return currPage;
}
public void setCurrPage ( int currPage) {
this . currPage = currPage;
}
public List < ? > getList ( ) {
return list;
}
public void setList ( List < ? > list) {
this . list = list;
}
}
pom
< mybatis- plus- boot- starter. version> 3.4 .2 < / mybatis- plus- boot- starter. version>
< dependency>
< groupId> com. baomidou< / groupId>
< artifactId> mybatis- plus- boot- starter< / artifactId>
< version> ${ mybatis- plus- boot- starter. version} < / version>
< / dependency>
< dependency>
< groupId> com. baomidou< / groupId>
< artifactId> mybatis- plus- generator< / artifactId>
< version> 3.4 .1 < / version>
< / dependency>
< dependency>
< groupId> org. apache. velocity< / groupId>
< artifactId> velocity- engine- core< / artifactId>
< version> 2.0 < / version>
< / dependency>
config
@Configuration
@MapperScan ( "com.xxxx.项目名称.dao" )
public class MybatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor ( ) {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor ( ) ;
interceptor. addInnerInterceptor ( new PaginationInnerInterceptor ( DbType . MYSQL) ) ;
return interceptor;
}
}
service层
@Override
public PageUtils listUserId ( UserOrderDTO params) {
QueryWrapper < DetailVO > wrapper = new QueryWrapper < > ( ) ;
wrapper. eq ( "user_id" , "测试" )
. eq ( "deleted" , 0 ) ;
IPage < rDetailVO> page = userMapper. listUserId ( new Query < Order > ( ) . getPage ( params. getPage ( ) , params. getLimit ( ) , "time" , false ) , wrapper) ;
return new PageUtils ( page) ;
}
Map
@Select ( "SELECT * FROM 表 ${ew.customSqlSegment}" )
IPage < DetailVO > listUserId ( IPage < ? > page, @Param ( Constants . WRAPPER) QueryWrapper < DetailVO > wrapper) ;