MybatisPlus学习笔记(1)

本文档详细介绍了MybatisPlus的引入、配置以及基础CRUD操作。通过一个简单的用户表案例,展示了如何创建POJO、Mapper接口,以及在SpringBoot中进行数据插入和更新。此外,还涉及了日志配置和通用CRUD操作。
摘要由CSDN通过智能技术生成

MybatisPlus学习资料:

  1. [官方文档](MyBatis-Plus (baomidou.com))
  2. 优质博客:学习MyBatis-Plus3这一篇就够了
  3. 教程:
    (1)黑马程序员MybatisPlus深入浅出教程,快速上手Mybatis-Plus
    (2尚硅谷MyBatisPlus教程(mybatis-plus框架精讲)
一、引入依赖及配置
1.主要新增的依赖
<!--mysql驱动-->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>

<!--lombok依赖-->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
    <!--除去原本的log依赖-->
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-logging</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<!--log4j依赖-->
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
</dependency>

<!--SpringBoot测试依赖-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
</dependency>
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
</dependency>

<!--mybatis-plus的springboot支持-->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.4.3</version>
</dependency>
2.编写配置

(1)log4j.properties

log4j.rootLogger=DEBUG,A1
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=[%t] [%c]-[%p] %m%n

(2)appication.properties

#数据库配置
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/database_name?\
 useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true&useSSL=false
spring.datasource.username=root
spring.datasource.password=root
二、使用mybatis-plus

​ 本次案例测试使用的数据表为

mysql> select *from tb_user;
+----+-----------+----------+--------+------+-----------------+
| id | user_name | password | name   | age  | email           |
+----+-----------+----------+--------+------+-----------------+
|  1 | zhangsan  | 123456   | 张三   |   18 | test1@itcast.cn |
|  2 | lisi      | 123456   | 李四   |   20 | test2@itcast.cn |
|  3 | wangwu    | 123456   | 王五   |   28 | test3@itcast.cn |
|  4 | zhaoliu   | 123456   | 赵六   |   21 | test4@itcast.cn |
|  5 | sunqi     | 123456   | 孙七   |   24 | test5@itcast.cn |
+----+-----------+----------+--------+------+-----------------+
5 rows in set (0.01 sec)
1.编写pojo

在项目文件夹下创建pojo文件夹,用于存放数据表实例。

package com.example.mybatistest.pojo;

import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName("tb_user")
public class User {
    private Long id;
    private String userName;
    private String password;
    private String name;
    private Integer age;
    private String email;
}
2.编写mapper

​ 在项目文件夹下创建mapper文件夹,存储mapper接口

package com.example.mybatistest.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.mybatistest.pojo.User;

public interface UserMapper extends BaseMapper<User> {
}
3.编写启动类
package com.example.mybatistest;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@MapperScan("com.example.mybatistest.mapper")  // 扫描的包对应mapper的package
@SpringBootApplication
public class MybatisTestApplication {
    public static void main(String[] args) {
        SpringApplication.run(MybatisTestApplication.class, args);
    }
}
4.编写测试类
package com.example.mybatistest;

import com.example.mybatistest.mapper.UserMapper;
import com.example.mybatistest.pojo.User;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import java.util.List;

@RunWith(SpringRunner.class)
@SpringBootTest
public class MybatisTestApplicationTests {
    @Autowired
    private UserMapper userMapper;  // 此处IDEA可能标红,但不影响后面testSelect方法的测试
    @Test
    public void testSelect(){
        List<User> userList = userMapper.selectList(null);
        for (User user : userList) {
            System.out.println(user);
        }
    }
}

​ 测试结果


[main] [com.example.mybatistest.mapper.UserMapper.selectList]-[DEBUG] <==      Total: 5
[main] [org.mybatis.spring.SqlSessionUtils]-[DEBUG] Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@13e00016]
User(id=1, userName=zhangsan, password=123456, name=张三, age=18, email=test1@itcast.cn)
User(id=2, userName=lisi, password=123456, name=李四, age=20, email=test2@itcast.cn)
User(id=3, userName=wangwu, password=123456, name=王五, age=28, email=test3@itcast.cn)
User(id=4, userName=zhaoliu, password=123456, name=赵六, age=21, email=test4@itcast.cn)
User(id=5, userName=sunqi, password=123456, name=孙七, age=24, email=test5@itcast.cn)
三、通用CRUD
1.插入操作

​ (1)基础语句

int result = mapper.insert(item);

​ (2)新增测试方法

@Test
public void testInsert(){
    User newUser = new User();
    newUser.setAge(20);
    newUser.setUserName("Jason");
    newUser.setEmail("test@mybatis.com");
    newUser.setName("Jason");
    newUser.setPassword("123");
    int result = this.userMapper.insert(newUser);
    System.out.println("result = " + result);
}

​ (3)结果

reuslt = 1

​ 数据表结果

mysql> select *from tb_user;
+---------------------+-----------+----------+--------+------+------------------+
| id                  | user_name | password | name   | age  | email            |
+---------------------+-----------+----------+--------+------+------------------+
|                   1 | zhangsan  | 123456   | 张三   |   18 | test1@itcast.cn  |
|                   2 | lisi      | 123456   | 李四   |   20 | test2@itcast.cn  |
|                   3 | wangwu    | 123456   | 王五   |   28 | test3@itcast.cn  |
|                   4 | zhaoliu   | 123456   | 赵六   |   21 | test4@itcast.cn  |
|                   5 | sunqi     | 123456   | 孙七   |   24 | test5@itcast.cn  |
| 1447068479692804097 | Jason     | 123      | Jason  |   20 | test@mybatis.com |
+---------------------+-----------+----------+--------+------+------------------+
6 rows in set (0.00 sec)

​ 可见id并不是自增,修改pojoUser对象。

package com.example.mybatistest.pojo;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName("tb_user")
public class User {
    @TableId(type = IdType.AUTO)
    private Long id;
    private String userName;
    private String password;
    private String name;
    private Integer age;
    private String email;
}

2.更新操作

(1)基础语法

int updateById(@Param(Constants.ENTITY) T entity);

(2)测试方法

@Test
public void testUpdateById() {
    User user = new User();
    user.setId(6L); //主键
    user.setAge(21); //更新的字段
    //根据id更新,更新不为null的字段
    this.userMapper.updateById(user);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值