目录
五、使用方法(具体的条件构造器参考https://mp.baomidou.com/guide/wrapper.html)
官方网站:https://mp.baomidou.com/guide/
一、引入依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.1.1</version>
</dependency>
二、 数据库相关配置
spring:
datasource:
driver-class-name:
url:
username:
password:
三、编写实体类
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* ‘@Data’ 为lombok,不了解的可以生成get、set方法代替
*
* @author lfg
* @since 2019-05-11
*/
@Data
@TableName("b_user")
public class User implements Serializable {
private static final long serialVersionUID = 1L;
/**
* AUTO 数据库ID自增
* INPUT 用户输入ID
* ID_WORKER 全局唯一ID,Long类型的主键
* ID_WORKER_STR 字符串全局唯一ID
* UUID 全局唯一ID,UUID类型的主键
* NONE 该类型为未设置主键类型
* <p>
* int为Integer
* bigInt为Long
* Integer、Long等必须为封装类,不然会出现问题
*/
@TableId(type = IdType.ID_WORKER)
@TableField(value = "user_id")
private Long userId;
/**
* 用户名
*/
@TableField(value = "user_name")
private String userName;
/**
* 创建时间
*/
@TableField(value = "create_time")
private Date createTime;
/**
* 更新时间
*/
@TableField(value = "update_time")
private Date updateTime;
*
*略去其他字段
*
}
四、编写mapper类
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.lfg.bonus.dao.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
/**
* <p>
* Mapper接口
* </p>
*
* @author lfg
* @since 2019-05-09
*/
@Mapper
public interface UserMapper extends BaseMapper<User> {
/**
* 多表关联用法
* 需要分页加Page,不需要分页就去掉,QueryWrapper 为查询的条件,注意sql不需要自己写 where
* UserEx为user的子类,为了存储user的扩展属性
* @param page 分页
* @param wrapper 查询条件
* @return 用户列表
*/
@Select("SELECT * FROM b_user u LEFT JOIN b_company c ON u.company_id = c.company_id ${ew.customSqlSegment}")
Page<UserEx> selectUserPage(Page page, @Param(Constants.WRAPPER) QueryWrapper wrapper);
}
五、使用方法(具体的条件构造器参考https://mp.baomidou.com/guide/wrapper.html)
1.单表操作
User user = userMapper.selectOne(new QueryWrapper<User>()
.eq("phone","110")
.eq("user_status", "1"));
2.单表查询+分页
IPage<User> userIPage = userMapper.selectList(
new Page<>(1, 10),
new QueryWrapper<User>().eq("phone", "110"));
3.单表操作+带判断条件的构造器
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("role_status", "1");
if (StringUtils.isNotEmpty("123")) {
queryWrapper.like("user_name", "用户名");
}
queryWrapper.orderByDesc("create_time");
IPage<User> userIPage = userMapper.selectList(
new Page<>(1, 10),queryWrapper);
4.多表操作
//UserEx为user的子类,包含了user的扩展属性
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.ne("u.user_status", StatusEnum.DEL.getStatus());
queryWrapper.eq("c.company_status", StatusEnum.VALID.getStatus());
IPage<UserEx> userIPage = userMapper.selectUserPage(
new Page<>(1, 10),queryWrapper);
六、service层
package com.lfg.bonus.service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.lfg.bonus.dao.entity.User;
import com.lfg.bonus.dao.mapper.UserMapper;
import org.springframework.stereotype.Service;
/**
* <p>
* 服务实现类
* service同mapper一样,可以使用通用方法,
* 有些批量插入在service层才能调用,mapper没有批量插入
* </p>
*
* @author lfg
* @since 2019-05-09
*/
@Service
public class UserService extends ServiceImpl<UserMapper, User> {
}