无事来学学--MybatisPlus运用(乐观锁)(上)

简介: MyBatis-Plus简称MP,是一个MyBatis的增强工具,在原有的基础上只做增强不做改变,为简化开发,提升效率而生

MyBatis-Plus

简称MP,是一个MyBatis的增强工具,在原有的基础上只做增强不做改变,为简化开发,提升效率而生


特点

“润物无声”:只做增强不做改变,引入它不会对现有的工程产生影响。
“效率至上”:只需要简单配置,即可CRUD操作
“丰富功能”:热加载,代码生成,分页,性能分析等功能一应俱全
复制代码


入门案例MP–查找所有

创建springboot 2.0以上版本(版本在2.0以下的,jdbc中的配置数据会有所不同,具体之后会说明),创建数据库,mybatis_plus 包含相关的字段(id,name,age,email)


一、首先在pom.xml引入相关依赖


                     org.springframework.boot             spring-boot-starter        
<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.junit.vintage</groupId>
        <artifactId>junit-vintage-engine</artifactId>
    </dependency>
    <!--mybatis-plus 持久层-->
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>3.3.1</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>
    <!-- lombok用来简化实体类-->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
</dependencies>
复制代码


二、创建实体(这里用User 表中的id ,name,age,email 做相关操作实例)


import lombok.Data;
@Data
public class User {
//    在添加lombok插件后,使用data注解,省去get,set
  private Long id;
  private String name;
  private Integer age;
  private String email;
}
复制代码


三、创建UserMapper,让它继承内置的BaseMapper


//核心代码,让UserMapper继承内置的BaseMapper (内置CRUD方法)
@Repository
public interface UserMapper extends BaseMapper<User> {
}
复制代码


BaseMapper中自带了CRUD方法


//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//
package com.baomidou.mybatisplus.core.mapper;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import java.io.Serializable;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.annotations.Param;
public interface BaseMapper<T> extends Mapper<T> {
    int insert(T entity);
    int deleteById(Serializable id);
    int deleteByMap(@Param("cm") Map<String, Object> columnMap);
    int delete(@Param("ew") Wrapper<T> wrapper);
    int deleteBatchIds(@Param("coll") Collection<? extends Serializable> idList);
    int updateById(@Param("et") T entity);
    int update(@Param("et") T entity, @Param("ew") Wrapper<T> updateWrapper);
    T selectById(Serializable id);
    List<T> selectBatchIds(@Param("coll") Collection<? extends Serializable> idList);
    List<T> selectByMap(@Param("cm") Map<String, Object> columnMap);
    T selectOne(@Param("ew") Wrapper<T> queryWrapper);
    Integer selectCount(@Param("ew") Wrapper<T> queryWrapper);
    List<T> selectList(@Param("ew") Wrapper<T> queryWrapper);
    List<Map<String, Object>> selectMaps(@Param("ew") Wrapper<T> queryWrapper);
    List<Object> selectObjs(@Param("ew") Wrapper<T> queryWrapper);
    <E extends IPage<T>> E selectPage(E page, @Param("ew") Wrapper<T> queryWrapper);
    <E extends IPage<Map<String, Object>>> E selectMapsPage(E page, @Param("ew") Wrapper<T> queryWrapper);
}
复制代码


四、编写测试,运行结果


首先在SpringBoot中的启动类添加MapperScan扫描UserMapper的路径

@MapperScan("com.zeus.demomp.mapper")
public class DemompApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemompApplication.class, args);
    }
}
复制代码

然后在test目录下进行测试,首先添加自动注入@AutoWired将UserMapper注入,编写查找所有的测试方法

class DemompApplicationTests {
    @Autowired
    private UserMapper userMapper;
    @Test
    //查找全部
    public void fillAll() {
        List<User> users = userMapper.selectList(null);
        System.out.println(users);
    }
}
复制代码


结果如图

网络异常,图片无法展示
|

拓展

这里引用了lombok进行实体的简化,省去get,set方法等等在Spring版本不同,jdbc配置信息区别

网络异常,图片无法展示
|


网络异常,图片无法展示
|

目录
相关文章
|
29天前
|
SQL 数据库
MyBatisPlus之逻辑删除、MyBatisPlus解决并发问题的乐观锁机制
MyBatisPlus之逻辑删除、MyBatisPlus解决并发问题的乐观锁机制
29 2
|
1月前
|
SQL 存储 算法
Mybatis-Plus- CRUD接口-主键策略-自动填充和乐观锁-分页-逻辑删除-条件构造器和常用接口
Mybatis-Plus- CRUD接口-主键策略-自动填充和乐观锁-分页-逻辑删除-条件构造器和常用接口
|
1月前
|
数据库
MyBatisPlus-乐观锁概念及实现步骤
MyBatisPlus-乐观锁概念及实现步骤
57 0
|
1月前
|
存储 Java 数据库连接
MyBatis-Plus如何娴熟运用乐观锁
MyBatis-Plus如何娴熟运用乐观锁
92 0
|
1月前
|
Java 关系型数据库 数据库连接
干翻Mybatis源码系列之第十二篇:基于Mybatis Plugins做一个乐观锁
干翻Mybatis源码系列之第十二篇:基于Mybatis Plugins做一个乐观锁
|
6月前
|
XML Java 数据库
mybatis-plus乐观锁
mybatis-plus乐观锁
49 0
|
Java
MyBatisPlus(七)乐观锁
使用乐观锁的意图是:当要更新一条记录的时候,希望这条记录没有被别人更新。那么需要在表中增加一个字段version来实现。
11838 0
|
11月前
|
安全 Java 数据库连接
mybatis plus整合乐观锁
mybatis plus整合乐观锁
|
11月前
|
数据库
MyBatisPlus的乐观锁和悲观锁
MyBatisPlus的乐观锁和悲观锁
117 0
|
数据库
springboot+mybatis实现乐观锁
springboot+mybatis实现乐观锁
125 0