ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

mybatis-plus

2020-07-29 19:00:45  阅读:309  来源: 互联网

标签:queryWrapper name userMapper 查询 plus user mybatis public


mybatis-plus插件的使用

这里只介绍简单使用, 更多详细信息请参考:

官网: https://mp.baomidou.com/

官方手册离线版: [点击下载]

狂神笔记: [点击下载笔记] 来源: 狂神说gitee

入门程序

1. 导入依赖

mybatis 和 mybatis-plus不能同时存在

maven地址:https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-boot-starter

2. pojo对象

主要注解:

@TableName("表明") 将对象与表明关联, 参数为数据库表名

@TableId() 定义主键信息, 参数为枚举类型IdType

@TableField("") 标识字段与属性的映射关系(驼峰命名), 如果名字相同则可以省略

@Data
@TableName("user") // 将对象与表明关联, 参数为数据库表名
@Accessors(chain = true)
public class User {
	@TableId(type = IdType.AUTO) // 定义主键信息
	private Integer id;
	@TableField(value = "name") // 标识字段与属性的关联关系
	private String name;
	private Integer age;
	private String sex;
}

3. dao接口, 继承BaseMapper接口

如果启动类上有了mapper的自动扫描注解, 例如@MapperScan("com.jt.demo.mapper"), 可不写@Mapper注解

@Mapper
public interface UserMapper extends BaseMapper<User> {
	
}

4. YML的配置

其中数据源的配置是必不可少的, 其他可不写(看需求)

mybatis的配置前缀改为mybatis-plus, 如下:

spring:
  datasource:
    # driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/jtdb?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true
    username: root
    password: 123456

#切换为Mybatisplus的配置   
mybatis-plus:
  # 定义别名包
  type-aliases-package: com.jt.demo.pojo
  #开启驼峰映射
  configuration:
    map-underscore-to-camel-case: true
    
#引入sql日志输出
logging:
  level:
    com.jt.demo.mapper: debug 

5. 测试

@Autowired
private UserMapper userMapper;

@Test
public void select() {
    List<User> users = userMapper.selectList(null);
    System.out.println(users);
}

结果: 查询到了所有的user

核心API

insert

返回值 方法 说明
int insert(T entity); 插入一条记录

delete

返回值 方法 说明
int deleteById(Serializable id); 根据 ID 删除
int deleteByMap(Map<String, Object> columnMap); 根据 columnMap 条件,删除记录
int delete(Wrapper<T> wrapper); 根据 entity 条件,删除记录
wrapper为实体对象封装操作类
(可以为 null)
int deleteBatchIds(Collection idList); 删除(根据ID 批量删除)
参数为集合
idList 主键ID列表
(不能为 null 以及 empty)

update

返回值 方法 说明
int updateById( T entity); 根据 ID 修改
int update(@Param(T entity, Wrapper<T> updateWrapper); 根据 whereEntity 条件,
更新记录
updateWrapper为
实体对象封装操作类
(可以为 null,里面的 entity
用于生成 where 语句)

select

返回值 方法 说明
T (泛型) selectById(Serializable id); 根据 ID 查询
List selectBatchIds(Collection idList); 查询
(根据ID 批量查询)
参数为一个集合类型
List selectByMap(Map<String, Object> columnMap); 查询(
根据 columnMap 条件)
T (泛型) selectOne(Wrapper<T> queryWrapper); 根据 entity 条件,
查询一条记录
queryWrapper为实体对象
封装操作类
(可以为 null)
Integer selectCount(Wrapper<T> queryWrapper); 根据 Wrapper 条件,
查询总记录数
List selectList(Wrapper<T> queryWrapper); 根据 Wrapper条件,
查询全部记录
List<Map<String, Object>> selectMaps(Wrapper<T> queryWrapper); 根据 Wrapper 条件,
查询全部记录
List selectObjs(Wrapper<T> queryWrapper); 根据 Wrapper 条件,
查询全部记录
注意:
只返回第一个字段的值
IPage selectPage(IPage<T> page,Wrapper<T> queryWrapper); 根据 entity 条件,
查询全部记录(并翻页)
IPage<Map<String, Object>> selectMapsPage(IPage<T> page,Wrapper<T> queryWrapper); 根据 Wrapper 条件,查询全部记录(并翻页)
page为分页查询条件
queryWrapper为实体对象封装操作类

案例

用户入库操作

注意事项: MP操作时, 将对象中不为null的数据,当做执行要素

@Test
public void insert() {
    User user = new User();
    user.setName("特朗普");
    user.setAge(60);
    user.setSex("男");
    int rows = userMapper.insert(user);
    System.out.println(rows);
}

条件查询1

查询name="特朗普"的用户

@Test
public void select01() {
    // 定义条件构造器 动态拼接where条件之后的数据
    User user = new User();
    user.setName("特朗普");

    // where name = "xxxx"
    QueryWrapper<User> queryWrapper = new QueryWrapper<>(user);
    List<User> userList = userMapper.selectList(queryWrapper);
    System.out.println(userList);
}

条件查询2

查询sex="女" age > 200 的用户

@Test
public void select02() {
    QueryWrapper<User> queryWrapper = new QueryWrapper<>();
    queryWrapper.eq("sex", "女");
    queryWrapper.gt("age", 200);
    List<User> userList = userMapper.selectList(queryWrapper);
    System.out.println(userList);
}

条件查询3

查询name中包含"精"的用户 like

@Test
public void select03() {
    QueryWrapper<User> queryWrapper = new QueryWrapper<>();
    queryWrapper.like("name", "精"); // "%精%" 包含精
    // queryWrapper.likeLeft("name", "精"); // "%精" 以精字结尾
    // queryWrapper.likeRight("name", "精"); // "%精" 以精字开头
    List<User> userList = userMapper.selectList(queryWrapper);
    System.out.println(userList);
}

条件查询4

查询age位于 18-30之间, 并且要求性别 "男"

@Test
public void select04() {
    QueryWrapper<User> queryWrapper = new QueryWrapper<>();
    queryWrapper.between("age", 18, 35).eq("sex", "男");
    List<User> userList = userMapper.selectList(queryWrapper);
    System.out.println(userList);
}

条件查询5

查询name不为空, 并且根据age降序排序,如果age相同则按照sex排序

@Test
public void select05() {
    QueryWrapper<User> queryWrapper = new QueryWrapper<>();
    queryWrapper.isNotNull("name").orderByDesc("age", "sex");
    List<User> userList = userMapper.selectList(queryWrapper);
    System.out.println(userList);
}

条件查询6

批量查询数据 要求查询id = 1, 3, 5, 8

@Test
public void select07() {
    // 1. idList 自己进行封装
    // List<Integer> idList = new ArrayList<>();
    //	idList.add(1);
    //	idList.add(3);
    //	idList.add(5);
    //	idList.add(8);

    // 2. Id的信息一般都是由前端进行传递, 所以一般都是竖着格式
    // 一般在定义数组格式时, 最好采用对象类型
    Integer[] ids = { 1, 3, 5, 8 };
    // 将数组转为集合
    List<Integer> idList = Arrays.asList(ids);
    List<User> userList = userMapper.selectBatchIds(idList); // in 语法
    System.out.println(userList);
}

条件查询7

查询记录总数 name不为空的记录总数

@Test
public void select08() {
    QueryWrapper<User> queryWrapper = new QueryWrapper<>();
    queryWrapper.isNotNull("name");
    int count = userMapper.selectCount(queryWrapper);
    System.out.println(count);
}

条件查询8

查询记录总数 name不为空的记录总数

@Test
public void delete() {
    userMapper.deleteById(null);
}

条件查询9

根据id查询

@Test
public void select06() {
    // 根据主键进行查询  返回值结果单个对象
    User user = userMapper.selectById(1);
    System.out.println(user);
}

根据id修改

@Test
public void update01() {
    // 根据主键更新, 要求对象中必须传递主键的信息
    User user = new User();
    user.setId(53);
    user.setName("奥巴马");
    user.setAge(66);
    user.setSex("男");
    userMapper.updateById(user);
}

根据条件修改

将name=null的用户信息name改为="测试案例" sex="男" age=1

@Test
public void update02() {
    User user = new User();
    user.setName("测试案例");
    user.setSex("男");
    user.setAge(1);
    UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();
    updateWrapper.isNull("name");
    userMapper.update(user, updateWrapper);
}

标签:queryWrapper,name,userMapper,查询,plus,user,mybatis,public
来源: https://www.cnblogs.com/zpKang/p/13398995.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有