编写:HorinJsor
文章目录
前言
怕搞忘。
提示:以下是本篇文章正文内容,下面案例可供参考
一、MP是什么?
MP就是mybatis+。
<!-- mybatis plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.0</version>
</dependency>
二、搭建步骤(以Eat板块为例)
1.创建实体类
代码如下(示例):
实体类与数据表不匹配需要注解声明
package com.example.thetoken.entity;
import com.baomidou.mybatisplus.annotation.*;
import java.io.Serializable;
@TableName("eat")
public class Eat implements Serializable {
private static final long serialVersionUID = 791116844820696015L;
@TableId(value = "eat_id", type = IdType.AUTO)
private Integer eatId;
private String eatName;
private String eatType;
private String eatTd;
private String eatPlace;
private String eatDesc;
private Double eatPrice;
@TableField(fill= FieldFill.INSERT)
private Integer eatStatus;
public Integer getEatStatus() {
return eatStatus;
}
public void setEatStatus(Integer eatStatus) {
this.eatStatus = eatStatus;
}
public Integer getEatId() {
return eatId;
}
public void setEatId(Integer eatId) {
this.eatId = eatId;
}
public String getEatName() {
return eatName;
}
public void setEatName(String eatName) {
this.eatName = eatName;
}
public String getEatType() {
return eatType;
}
public void setEatType(String eatType) {
this.eatType = eatType;
}
public String getEatTd() {
return eatTd;
}
public void setEatTd(String eatTd) {
this.eatTd = eatTd;
}
public String getEatPlace() {
return eatPlace;
}
public void setEatPlace(String eatPlace) {
this.eatPlace = eatPlace;
}
public String getEatDesc() {
return eatDesc;
}
public void setEatDesc(String eatDesc) {
this.eatDesc = eatDesc;
}
public Double getEatPrice() {
return eatPrice;
}
public void setEatPrice(Double eatPrice) {
this.eatPrice = eatPrice;
}
@Override
public String toString() {
return "Eat{" +
"eatId=" + eatId +
", eatName='" + eatName + '\'' +
", eatType='" + eatType + '\'' +
", eatTd='" + eatTd + '\'' +
", eatPlace='" + eatPlace + '\'' +
", eatDesc='" + eatDesc + '\'' +
", eatPrice=" + eatPrice +
", eatStatus=" + eatStatus +
'}';
}
@TableField(exist=false)
private String price;
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
}
常用注解 | 作用 |
---|---|
@TableName(value=“表名”) | 当表与实体类名称、驼峰转义不相同时使用。声明在类上。 |
@TableId(type=IdType.AUTO) | 声明自增主键 。 |
@TableField(exist=false) | 当实体类中存在非数据表字段,使用该注解过滤该字段 |
@TableField(fill=FieldFill.INSERT) | 插入数据时填充 |
@TableField(fill=FieldFill.INSERT_UPDATE) | 插入和更新数据时填充 |
2.创建Mapper接口
创建mapper接口类,继承 BaseMapper<实体类名>
@Mapper
public interface EatMapper extends BaseMapper<Eat> {
}
3.创建Service接口
创建service接口,继承 IService<实体类名>
public interface EatService extends IService<Eat>{
}
4.创建ServiceImpl实现类
创建ServiceImpl实现类,继承 ServiceImpl<mapper接口名,实体类名>,实现 Service
@Service
public class EatServiceImpl extends ServiceImpl<EatMapper, Eat> implements EatService {
@Autowired
private EatMapper eatMapper;
}
三、分页插件的使用步骤
1.创建一个配置类
建议创建一个config
的包,专门用于存放配置类。
注意:@MapperScan
@Configuration
这大注解必不可少。
@Configuration
@MapperScan("com.example.md5test.mapper")
public class MybatisPlusConfig {
/**
* 新的分页插件,一缓和二缓遵循mybatis的规则,需要设置 MybatisConfiguration#useDeprecatedExecutor = false 避免缓存出现问题(该属性会在旧插件移除后一同移除)
*/
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.H2));
return interceptor;
}
@Bean
public ConfigurationCustomizer configurationCustomizer() {
return configuration -> configuration.setUseDeprecatedExecutor(false);
}
}
2.1 使用QueryWrapper分页查询
场景:分页查询名字包含江的用户列表:
service:
- 返回类使用
Ipage<实体类>
的形式 - 入参首个参数一定要为
Page类
IPage<User> selctUser(Page page,String name);
serviceImpl:
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public Page<User> selctUser(Page page,String name) {
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.
like("user_name",name);
return userMapper.selectPage(page,queryWrapper);
}
}
调用:
@Test
void findUserLikeName(){
Page page = new Page(1,5);
IPage<User> horin = userService.selctUser(page, "江");
}
2.2 自定义分页查询
场景:分页查询名字包含江的用户列表:
mapper.xml:
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.md5test.mapper.UserMapper">
<resultMap id="BaseResultMap" type="com.example.md5test.domain.User">
<id property="id" column="id" />
<result property="user_account" column="userAccount" />
<result property="user_password" column="userPassword" />
<result property="user_name" column="userName" />
<result property="user_state" column="userState" />
</resultMap>
<select id="selectUser" parameterType="java.lang.String" resultMap="BaseResultMap">
SELECT
*
FROM
`user`
<where>
<if test="name !=null and name !='' ">
AND user_name like #{name}
</if>
</where>
</select>
</mapper>
mapper接口:
- 接口入参首个参数一定是
Page类
- 注意用
@Param
配置别名 - 返回类为
IPage<实体类>
@Mapper
public interface UserMapper extends BaseMapper<User> {
IPage<User> selectUser2(@Param("page") Page page,@Param("name") String name);
}
service:
IPage<User> selctUser2(Page page,String name);
serviceImpl
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public IPage<User> selctUser2(Page page, String name) {
return userMapper.selectUser2(page, name);
}
}
特别篇:
总结
冲。