MyBatis Plus与spring boot 的使用

  • 新建一个spring boot项目
  • 导入相关依赖,spring boot 2.2.1
  <!--mybatis-plus-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.3.1</version>
        </dependency>

        <!--mysql依赖-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <!--lombok用来简化实体类-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
  • 配置
# 应用名称
spring:
  application:
    name: mybatisPlusApplication
  datasource:
    url: jdbc:mysql://localhost:3306/mybatis_plus?characterEncoding=utf-8&serverTimezone=UTC
    username: root
    password: root
    driver-class-name: com.mysql.cj.jdbc.Driver
mybatis-plus:
  mapper-locations: classpath*:/mapper/**/*.xml
  #mybatis日志
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  global-config:
    db-config:
      logic-delete-value: 1  #逻辑删除 注意:被删除前,数据的deleted 字段的值必须是 0,才能被选取出来执行逻辑删除的操作
      logic-not-delete-value: 0






  • 新建配置类MybatisPlusConfig
package com.wang.config;


import com.baomidou.mybatisplus.extension.plugins.OptimisticLockerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
@MapperScan("com.wang.mapper")
public class MybatisPlusConfig {
    /**
     * 乐观锁插件
     */
    @Bean
    public OptimisticLockerInterceptor optimisticLockerInterceptor() {
        return new OptimisticLockerInterceptor();
    }

    /**
     * 分页插件
     */
    @Bean
    public PaginationInterceptor paginationInterceptor() {
        return new PaginationInterceptor();
    }



}


  • 实体类User
package com.wang.entity;


import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.Version;
import lombok.Data;
import org.springframework.stereotype.Component;
import java.util.Date;
@Component
@Data
public class User {
    private  Long id;
    private String name;
    private  Integer age;
    private String email;
    @TableField(fill = FieldFill.INSERT)
    private Date createTime;  //create_time
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date updateTime; //update_time
    @Version
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer version;
    @TableLogic
    private Integer deleted;

}
  • mapper
package com.wang.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.wang.entity.User;
import org.springframework.stereotype.Repository;

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

自动填充MyMetaObjectHandler类

package com.wang.entity;

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;

import java.util.Date;
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
    //mp执行添加操作,这个方法执行
    @Override
    public void insertFill(MetaObject metaObject) {
        this.setFieldValByName("createTime",new Date(),metaObject);
        this.setFieldValByName("updateTime",new Date(),metaObject);
        this.setFieldValByName("version",1,metaObject);

    }

    //mp执行修改操作,这个方法执行
    @Override
    public void updateFill(MetaObject metaObject) {
        this.setFieldValByName("updateTime",new Date(),metaObject);
        this.setFieldValByName("version",1,metaObject);
    }
}
  • 测试类
package com.wang;


import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.wang.entity.User;
import com.wang.mapper.UserMapper;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


@SpringBootTest
class MyBatisPlusApplicationTests {

    @Autowired
    private UserMapper userMapper;



    @Test
    public void findUsers(){
        List<User> users = userMapper.selectList(null);
        System.out.println(users);
    }
    //修改操作,通过id更新
    @Test
    public void TestUpdate(){
        User user = new User();
        user.setId(1L);
        user.setName("lucymary");
        int count = userMapper.updateById(user);
        System.out.println(count);
    }
    @Test
    public void testAdd(){
        User user = new User();
        user.setName("张三");
        user.setAge(20);
        user.setEmail("lucymary@gmail.com");
        int insert = userMapper.insert(user);
        System.out.println(insert);
    }

    @Test
    public void testDelete(){
        User user = new User();
        user.setId(1L);
        int count = userMapper.deleteById(user.getId());
        System.out.println(count);
    }
    //测试乐观锁
    @Test
    public void OptimisticLocker(){
        //查询
        User user = new User();
        user.setId(1576148994537553922L);
        User user1 = userMapper.selectById(user.getId());
        //修改
        user1.setName("测试");
        int i = userMapper.updateById(user1);
        System.out.println(i);
    }

    //多个id批量查询selectBatchIds
    @Test
    public void testSelectByIds(){
        List<User> userList = userMapper.selectBatchIds(Arrays.asList(2, 3, 4, 5));
        System.out.println(userList);
    }

    //简单条件查询
    @Test
    public void testSelectByMap(){
        HashMap<String, Object> hashMap = new HashMap<>();
        hashMap.put("name", "test");
        hashMap.put("age", 20);
        List<User> selectByMap = userMapper.selectByMap(hashMap);
        System.out.println(selectByMap);

    }


    //分页查询
    @Test
    public void testPagination(){
        Page page = new Page(1, 3);
        Page selectPage = userMapper.selectPage(page, null);
        //得到所有的分页数据
        long pages = selectPage.getPages();//总页数
        long current= selectPage.getCurrent();//当前页
        List<User> list = selectPage.getRecords();//查询数据集合
        long total = selectPage.getTotal();//总数据条数
        boolean hasNext = selectPage.hasNext();//下1页
        boolean hasPrevious = selectPage.hasPrevious();//上一页

        System.out.println(pages);
        System.out.println(current);
        System.out.println(list);
        System.out.println(hasNext);
        System.out.println(hasPrevious);

    }

    //根据id删除记录
    @Test
    public void testDeleteById(){
        int byId = userMapper.deleteById(3L);
        System.out.println(byId);
    }
    //根据id删除记录批量
    @Test
    public void  testDeleteByIds(){
        List<User> ids = userMapper.selectBatchIds(Arrays.asList(2, 3));
        System.out.println(ids);
    }
    //简单的条件删除
    @Test
    public void testDeleteByMap(){
        HashMap<String, Object> map = new HashMap<>();
        map.put("name","1136");
        map.put("age",20);
        int byMap = userMapper.deleteByMap(map);
        System.out.println(byMap);
    }

    //测试逻辑删除后的查询
    //MyBatis Plus中查询操作也会自动添加逻辑删除字段的判断
    @Test
    public  void testDeleteSelect(){
        List<User> userList = userMapper.selectList(null);
        userList.forEach(System.out::println);
    }

    //条件操作
    @Test
    public void testQuery(){
        QueryWrapper<User> query = new QueryWrapper<>();
        query.isNull("name")
                .ge("age",20)
                .isNotNull("email");
        List<User> userList = userMapper.selectList(query);
        userList.forEach(System.out::println);
    }

    @Test
    public void testSelectOne(){
        QueryWrapper<User> queryWrapper=new QueryWrapper<>();
        queryWrapper.eq("name", "Sandy");
        User user = userMapper.selectOne(queryWrapper);//只能返回一条记录
        System.out.println(user);
    }

    @Test
    public void testSelectCount(){
        QueryWrapper<User> queryWrapper= new QueryWrapper<>();
        queryWrapper.between("age",20,35);
        Integer count= userMapper.selectCount(queryWrapper);
        System.out.println(count);
    }

    @Test
    public void testSelectMaps(){
        QueryWrapper<User> queryWrapper= new QueryWrapper<>();
        queryWrapper.select("name","age")
                .like("name","S")
                .likeRight("email","t");
        java.util.List<Map<String, Object>> user= userMapper.selectMaps(queryWrapper);//返回值是map列表
        user.forEach(System.out::println);
    }
    @Test
    public void testSelectListOrderBy(){
        QueryWrapper<User> queryWrapper= new QueryWrapper<>();
        queryWrapper.orderByAsc("age");
      List<User> userList=  userMapper.selectList(queryWrapper);
      userList.forEach(System.out::println);
    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要在Spring Boot使用Mybatis Plus,可以按照以下步骤进行配置: 1. 添加相关依赖 在`pom.xml`文件中添加以下依赖: ```xml <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>最新版本</version> </dependency> ``` 2. 配置数据源 在`application.properties`或`application.yml`中配置数据库连接信息,例如: ```properties spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase spring.datasource.username=root spring.datasource.password=123456 spring.datasource.driver-class-name=com.mysql.jdbc.Driver ``` 3. 配置Mybatis Plus 在Spring Boot的配置类中,添加`@MapperScan`注解,并指定Mapper接口的包路径,例如: ```java @Configuration @MapperScan("com.example.mapper") public class MybatisPlusConfig { } ``` 4. 创建Mapper接口和实体类 创建Mapper接口,并继承Mybatis Plus提供的BaseMapper接口,例如: ```java public interface UserMapper extends BaseMapper<User> { } ``` 创建实体类,并使用相关注解进行映射,例如: ```java @Data @TableName("user") public class User { @TableId(type = IdType.AUTO) private Long id; private String name; private Integer age; // getters and setters } ``` 5. 使用Mapper接口 在Service或Controller中注入Mapper接口,并调用其中的方法进行数据库操作,例如: ```java @Autowired private UserMapper userMapper; public void getUserById(Long id) { User user = userMapper.selectById(id); // ... } ``` 以上就是在Spring Boot使用Mybatis Plus的基本配置和使用步骤。根据具体需求,还可以配置分页插件、逻辑删除等功能。详细的使用文档可以参考Mybatis Plus官方文档。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Traveler飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值