原文网址:MyBatis-Plus--自定义SQL_IT利刃出鞘的博客-****博客
简介
说明
本文用实例介绍MybatisPlus如何自定义SQL。
使用
自定义的sql使用Wrapper对版本有要求:mybatis-plus版本需要大于或等于3.0.7。
值 |
含义 |
条件构造器(Wrapper) |
|
所设置的列 |
|
要select的列 |
特殊语句
操作 | 实例 | 说明 |
TRUNCATE | @Update("TRUNCATE xxx") | 不要用@Delete |
ALTER | @Update("ALTER xxx") | |
DELETE | @Delete("DELETE xxx") |
源码
包里边定义好的常量。我们可以直接用这些常量。
mybatis-plus-core-3.3.\com\baomidou\mybatisplus\core\toolkit\
package ;
public interface Constants extends StringPool {
String MYBATIS_PLUS = "mybatis-plus";
String MD5 = "MD5";
String AES = "AES";
String AES_CBC_CIPHER = "AES/CBC/PKCS5Padding";
String ENTITY = "et";
String ENTITY_DOT = "et.";
String WRAPPER = "ew";
String WRAPPER_DOT = "ew.";
String WRAPPER_ENTITY = "";
String WRAPPER_SQLSEGMENT = "";
String WRAPPER_EMPTYOFNORMAL = "";
String WRAPPER_NONEMPTYOFNORMAL = "";
String WRAPPER_NONEMPTYOFENTITY = "";
String WRAPPER_EMPTYOFWHERE = "";
String WRAPPER_NONEMPTYOFWHERE = "";
String WRAPPER_ENTITY_DOT = ".";
String U_WRAPPER_SQL_SET = "";
String Q_WRAPPER_SQL_SELECT = "";
String Q_WRAPPER_SQL_COMMENT = "";
String Q_WRAPPER_SQL_FIRST = "";
String COLUMN_MAP = "cm";
String COLUMN_MAP_IS_EMPTY = "";
String COLLECTION = "coll";
String WHERE = "WHERE";
String MP_OPTLOCK_INTERCEPTOR = "oli";
String MP_OPTLOCK_VERSION_ORIGINAL = "MP_OPTLOCK_VERSION_ORIGINAL";
String MP_OPTLOCK_VERSION_COLUMN = "MP_OPTLOCK_VERSION_COLUMN";
String MP_OPTLOCK_ET_ORIGINAL = "MP_OPTLOCK_ET_ORIGINAL";
String WRAPPER_PARAM = "MPGENVAL";
String WRAPPER_PARAM_FORMAT = "#{%.%s}";
}
分页
代码
Mapper
package ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
@Repository
public interface UserMapper extends BaseMapper<User> {
// 自定义SQL的分页
@Select("SELECT * FROM t_user ${}")
IPage<User> findUser(IPage<User> page, @Param() Wrapper wrapper);
}
Controller
package ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
@Api(tags = "分页")
@RestController
@RequestMapping("page")
public class PageController {
// 我为了简单直接注入mapper,项目中controller要通过service调mapper
@Autowired
private UserMapper userMapper;
@ApiOperation("自定义SQL")
@GetMapping("customSQL")
public IPage<User> customSQLPage(Page<User> page) {
LambdaQueryWrapper<User> wrapper = ();
(User::getNickName, "昵称");
// 这样写会报错:MybatisPlusException: can not use this method for "getCustomSqlSegment"
// LambdaQueryChainWrapper<User> wrapper = ()
// .eq(User::getUserName, "sky");
return (page, wrapper);
}
}
测试
访问:http://localhost:8080/page/customSQL
上边是文章的部分内容,为便于维护,全文已转移到此网址:MyBatis-Plus-自定义SQL - 自学精灵