SpringBoot整合mybatis-plus

1.导入相关依赖

这里使用的是springboot3.2.8,对于3.x版本需要导入新的对于mp的依赖(3.1.6也支持旧的mybaitsplus依赖),千万注意版本冲突,不然根本运行不了

<!--        数据库相关依赖(开始)       -->
        <!-- 阿里数据源驱动 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.2.6</version>
        </dependency>

        <!-- MyBatis-Plus 启动 -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
            <version>3.5.7</version>
        </dependency>

        <!--        引入mysql驱动-->
        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
        </dependency>
        <!--        数据库相关依赖()       -->

旧的mp依赖

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.5.7</version>
</dependency>

2.编写数据库的相关配置

在application.yml文件加入以下这些,这里数据源用的是druid,

mp的日志可以选择是否打开,以及可以关闭图标等等

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/myuser
    username: root
    password: a
    type: com.alibaba.druid.pool.DruidDataSource
    #关闭spring的图标
  main:
    banner-mode:

#设置打开mybatis-plus的日志
mybatis-plus:
#  开启日志: mp
#  configuration:
#    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  #关闭mp的图标
  global-config:
      banner: false

3.编写实体类

这里面的id要指定为主键且自增,类名要与数据库表名对应,属性名也一样,如果名字不对应也可以加上@TableName注解来指定表名,@TableField指定属性名

@Data
public class User {
    @TableId(value = "id", type = IdType.AUTO)
    Long id;
    String name;
    String pwd;

    public User(long id, String name, String pwd) {
        this.id = id;
        this.name = name;
        this.pwd = pwd;
    }

    public User() {

    }
}

4.编写dao层的接口

就继承一个类如何泛型写上刚刚写的实体类就完成了基础的crud操作,接下来可以在测试中调用各种api

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

5.测试

@SpringBootTest
class UserTest {
    @Autowired
    UserDao userDao;

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

    /**
     * 增加用户
     * 注意多次增加要重新创建对象,否则会报错
     */
    @Test
    public void addUser(){
        User user = new User();
        user.setName("jxq");
        user.setPwd("20050101");
        userDao.insert(user);
    }

    /**
     * 更新数据根据id
     * 直接设置一个对象,如果有数据则修改,没用数据则不作修改
     */
    @Test
    public void updateUser(){
        User user = new User();
        user.setId(3l);
        user.setName("xhc");
        user.setPwd("000000");
        userDao.updateById(user);
    }

    /**
     * 删除数据根据id
     */
    @Test
    public void deleteUser(){
        userDao.deleteById(15);
    }
    /**
     * 分页查询
     */
    @Test
    public void pageUser(){
//        Page page = new Page(1,5);
        Page page = userDao.selectPage(new Page(2,4), null);
        System.out.println("总共有几条数据"+page.getTotal());
        System.out.println("获取到的数据"+page.getRecords());
        System.out.println("总页数"+page.getPages());
        System.out.println("当前页数"+page.getCurrent());
        System.out.println("每页显示的条数"+page.getSize());
    }
    /**
     *  条件查询
     */
    @Test
    public void wrapperUser(){
        LambdaQueryWrapper<User> qw = new LambdaQueryWrapper<>();
        // 条件查询,id小于10,大于5
        qw.lt(User::getId,10);
        qw.gt(User::getId,5);
        List<User> users = userDao.selectList(qw);
        System.out.println(users);
    }
    @Test
    public void SqlUser(){
        List<User> users = userDao.selectSome();
        System.out.println(users);
    }
    @Test
    public void nullUser(){
        User user = new User();
       // user.setId(5l);
        LambdaQueryWrapper<User> qw = new LambdaQueryWrapper<>();
        //如果id不为空则加入这个条件否则不加入
        qw.gt(user.getId()!=null,User::getId,user.getId());
        List<User> users = userDao.selectList(qw);
        System.out.println(users);
    }
    @Test
    public void testUser2(){

    }
}

  • 11
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值