MyBatisPlus 操作数据库

MyBatis-Plus(简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生.

支持跨数据库的开发
将数据库的 增删改查 封装成 对象

以面向对象的方式操作数据库
由框架动态生成SQL语句
实现了 跨数据库 操作

首先进行导入MyBatisPlus

<!--spring整合mybatis-plus -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.4.3</version>
</dependency>

需要将MyBatis的包删除掉
否则会 冲突

使用

数据库里每张表与每个对象进行关联
使用@TableName注解
对象与表名 映射关系

标识主键 并进行自增
@TableId

@Data
@Accessors(chain = true)
@TableName("user") // 让对象与表名 一一映射 关系
public class User extends BasePojo{
    @TableId(type = IdType.AUTO)  //标识 主键  type = IdType.AUTO 主键自增
    private Integer id;

    // 如果 数据库的表 字段 与对象字段 一致(包含驼峰规则) 可以不写 @TableField
    private String username;
    private String password;
    private String phone;
    private String email;
    private Boolean status;

    // @TableField(exist = false)  //表示 该属性不存在
}

该属性不存在
@TableField(exist = false)

编辑Mapper

继承公共的接口
Mapper 继承该接口后,无需编写 mapper.xml 文件,即可获得CRUD功能

继承时 必须添加泛型 泛型必须与 进行关联

// 继承时 必须添加泛型 泛型必须与表进行关联
public interface UserMapper extends BaseMapper<User> {
}

编辑yml文件

将mybatis 替换成 mybatis-plus

mybatis-plus:
  type-aliases-package: com.jt.pojo
  #  mapper-locations  xml的配置文件存放路径
  mapper-locations: classpath:/mappers/*.xml
  #开启驼峰映射
  configuration:
    map-underscore-to-camel-case: true

最后进行使用

新增

//这个user是 需要添加进去的 用户信息
int insert = userMapper.insert(user);

其他属性查询
需要条件构造器
用来封装where 条件

// 如果查询出的结果 绝对有一个 使用 selectOne
User one = userMapper.selectOne(null);

// 查询出的结果 有多个
List<User> userList = userMapper.selectList(null);

创建条件构造器

User temp = new User();
temp.setUsername("狗蛋狗蛋");

//利用对象封装数据  根据对象中不为null的元素动态拼接Sql
QueryWrapper<User> queryWrapper = new QueryWrapper<>(temp);

// 如果查询出的结果 绝对有一个 使用 selectOne
User user = userMapper.selectOne(queryWrapper);

条件限制查询

使用到转义字符

符号转义字符
>gt
<lt
=eq
>=ge
<=le
!=ne

id大于等于5

/**
 * 条件限制查询
 * id > 5
 *
 * 转义字符  > gt  < lt  = eq
 *          >= ge  <= le  !=  ne
 * */
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
// 使用 gt 代表大于等于  第一个参数代表 表字段
queryWrapper.gt("id", 5);

// 查询出的结果 有多个 selectList
List<User> userList = userMapper.selectList(queryWrapper);
System.out.println(userList);

模糊查询

使用like方法
like 方法代表 左右都有百分号 "%admin%"
likeLeft 代表 左边有百分号 "%admin"
likeRight 代表 右边有百分号 "admin%"

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
// 模糊查询
queryWrapper.like("username", "admin");
List<User> userList = userMapper.selectList(queryWrapper);
System.out.println(userList);

使用降序 或 升序 排列

// 查询出来的数据 根据 id 进行降序排列
queryWrapper.like("username", "admin").orderByDesc("id");

多值查询

使用in方法
使用是传入包装类型的数组

Integer[] ids = {1,2,23,24};// 一定使用int 的包装类型

QueryWrapper<User> queryWrapper = new QueryWrapper<>();

queryWrapper.in("id", ids);

List<User> userList = userMapper.selectList(queryWrapper);
System.out.println(userList);

方法二使用提供的API

Integer[] ids = {1, 2, 23, 24};
// Arrays.asList(ids) 数组转换成集合
List<User> userList = userMapper.selectBatchIds(Arrays.asList(ids));

System.out.println(userList);

动态查询

如果查询的数据为空
则不添加为空的条件

String phone = "15566332255";
String email = "1199@qq.com";

QueryWrapper<User> queryWrapper = new QueryWrapper<User>();
queryWrapper.eq(phone != null, "phone", phone).eq(email != null, "email", email);

List<User> userList = userMapper.selectList(queryWrapper);

或者
判断不为空字符串和不为null

// Spring 提供的一个工具包 判断当前字符串是否为空串 或 为 null
StringUtils.hasLength(phone)

获取所有的主键

// 获取主键信息 Objs
List<Object> objects = userMapper.selectObjs(null);

System.out.println(objects);

更改

password等于123456的数据phone改为111111111

User user = new User();
// 进行更新的值
user.setPhone("1008611").setEmail("qweqwe@qq.com");

UpdateWrapper<User> userUpdateWrapper = new UpdateWrapper<>();
// 查询数据的条件  password = 123456 的数据
userUpdateWrapper.eq("password", "123456");

// 第一个参数: 是进行 更新的值
// 第二个参数: 是进行 查询的值
userMapper.update(user,userUpdateWrapper);
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值