php逆向工程实例,对mybatis逆向工程生成example对象的应用

[Java] 纯文本查看 复制代码package com.example.demo.service;

import com.example.demo.common.ResponseBody;

import com.example.demo.dao.UserMapper;

import com.example.demo.entity.User;

import com.example.demo.utils.PageUtils;

import com.github.pagehelper.Page;

import com.github.pagehelper.PageHelper;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Service;

import tk.mybatis.mapper.entity.Example;

import java.util.Map;

/**

* Description:

* 1. 业务层负责处理上层转发下来的请求,进行参数判断,错误处理或抛出,业务逻辑处理,并向下层(持久层)请求需要的数据

* 2. 将处理结果(成功与否,提示信息,处理产生的数据)封装为请求体 (ResponseBody)

* 3. 将处理结果返回给上层,由上层封装到响应报文中返回给请求方

*

* [url=home.php?mod=space&uid=686208]@AuThor[/url] yangzhaoyunfei [email]yangzhaoyunfei@qq.com[/email]

* [url=home.php?mod=space&uid=686237]@date[/url] 18-9-20

*/

@Service

public class UserService {

@Autowired

private UserMapper mapper;

/**

* example 极大方便了单表的 crud 对多表级联还是原生 sql 强大

* Criterion 单个条件(单数)

* Criteria 多个条件(复数)(其中的 Criterion(单) 通过 and / or 等相连,并被外围的一个括号包围),比如:

*

* where Criteria1( Criterion1 and Criterion2 and ( Criterion3 or Criterion4) ) or Criteria2( Criterion5 or Criterion6 ... )

*

*

*

* 1. example 上只能调用 and() / or() 添加复合查询条件 Criteria,

* 2. 对 Criteria(复) 调用其他方法 添加 Criterion(单) 到 Criteria(复) 中

* 3. example 携带所有组合的 Criteria(复) (各 Criteria(复)中有数个 Criterion(单),共可以拼成无限长的 where clause ),到数据库中查询结果.

*

* [url=home.php?mod=space&uid=952169]@Param[/url] paramsMap

* @return

*/

public ResponseBody getList(Map paramsMap) {

//参数校验,错误处理/抛出,业务处理等

Example example = new Example(User.class);

//and()方法得到一个Criteria查询条件字句,用and与前面子句相连;Criteria字句字句内还可以放子句

example.selectProperties("key", "id", "name", "age");//key是测试添加的虚拟字段,表中是没有的,[url=home.php?mod=space&uid=2660]@see[/url] User.key 属性

//单个独立条件( `is_deleted` = 0 )

example.and().andEqualTo("isDeleted", 0);

/******************** 测试代码 **************/

example.or().andEqualTo("age", 3);

// example

/******************** 测试代码 **************/

if (paramsMap.get("keywords") != null && !"".equals(paramsMap.get("keywords"))) {

//多列模糊搜索 and ( `name` like '%三%' or `nick_name` like '%三%' )

example.and()

.orLike("name", "%" + paramsMap.get("keywords").toString() + "%")

.orLike("nickName", "%" + paramsMap.get("keywords").toString() + "%");

}

if (paramsMap.get("age") != null) {

//单值限定 and ( `name` like '%三%' or `nick_name` like '%三%' ) and ( `age` = 3 )

example.or().andEqualTo("age", Integer.parseInt(paramsMap.get("age").toString()));

}

if (paramsMap.get("order") != null && !"".equals(paramsMap.get("order"))) {

//排序

switch (paramsMap.get("order").toString()) {

case "1":

//单列/多列(同向/异向)排序

example.orderBy("modifyByTime").desc().orderBy("age").orderBy("gender").asc();

break;

case "2":

example.orderBy("modifyByTime").asc();

break;

case "3":

example.orderBy("createByTime").desc();

break;

case "4":

example.orderBy("createByTime").asc();

break;

default:

example.orderBy("modifyByTime").desc();

}

} else {

example.orderBy("modifyByTime").desc();

}

if (paramsMap.get("group") != null) {

//分组

}

if (paramsMap.get("distinct") != null) {

//去重

example.setDistinct(true);

}

//设置选取那些列

example.selectProperties("id");

/********************** 分页部分 *******************/

//分页参数,检查及处理

int pageNum = null != paramsMap.get("currentPage") ? Integer.parseInt(paramsMap.get("currentPage").toString()) : 1;

int pageSize = null != paramsMap.get("pageSize") ? Integer.parseInt(paramsMap.get("pageSize").toString()) : 10;

/**

* 获取第pageNum页(从1开始),pageSize条内容,默认会查询满足条件的总数count,然后limit分页

* 紧跟着的第一个select方法会被分页,后面的不会被分页,除非再次调用PageHelper.startPage;

* 实际返回的结果list类型是Page,如果想取出分页信息,需要强制转换为Page,或者使用PageInfo类

* 如:PageInfo page = new PageInfo(list);

*

*/

PageHelper.startPage(pageNum, pageSize, true, false, false);

Page page = (Page) mapper.selectByExample(example);

//包装成我司需要的结构

PageUtils pageUtils = new PageUtils(page.getResult(), page.getTotal(), pageSize, pageNum);

return ResponseBody.ok(pageUtils);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值