MyBatis-Plus【学习记录】

Mybatis-Plus

一、简介

官方文档:https://baomidou.com/pages/24112f/

二、入门案例

1、开发环境

IDE:idea

JDK:JDK8+

构建工具:maven

数据库:MySQL

SpringBoot

MyBatis-Plus

2、创建数据库以及表

创建数据库表

3、创建Spring Boot工程

a>初始化工程

添加依赖

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.2</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
    </dependencies>

配置数据源

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/mybatis_plus?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC
    username: root
    password: 

创建实体类

package com.kj.mybatisplus.pojo;

import lombok.*;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
   

    private Long id;

    private String name;

    private Integer age;

    private String email;

}

创建接口

package com.kj.mybatisplus.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.kj.mybatisplus.pojo.User;
import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface UserMapper extends BaseMapper<User> {
   

}

测试

package com.kj.mybatisplus;

import com.kj.mybatisplus.mapper.UserMapper;
import com.kj.mybatisplus.pojo.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.List;

@SpringBootTest
public class MybatisplusTest {
   

    @Autowired UserMapper userMapper;

    @Test
    public void test(){
   
        //通过条件构造器查询一个list集合,若没有条件,则可以设置为null
        List<User> list = userMapper.selectList(null);
        list.forEach(System.out::println);
    }
}

添加日志

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/mybatis_plus?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC
    username: root
    password:
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

==>  Preparing: SELECT id,name,age,email FROM user
==> Parameters: 
<==    Columns: id, name, age, email
<==        Row: 1, Jone, 18, test1@baomidou.com
<==        Row: 2, Jack, 20, trst2@baomidou.com
<==        Row: 3, Tom, 28, test3@baomidou.com
<==        Row: 4, Sandy, 21, test4@baomidou.com
<==        Row: 5, Billie, 24, test5@baomidou.com
<==      Total: 5
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@c2e3264]
User(id=1, name=Jone, age=18, email=test1@baomidou.com)
User(id=2, name=Jack, age=20, email=trst2@baomidou.com)
User(id=3, name=Tom, age=28, email=test3@baomidou.com)
User(id=4, name=Sandy, age=21, email=test4@baomidou.com)
User(id=5, name=Billie, age=24, email=test5@baomidou.com)

三、功能

新增

    @Test
    public void testInsert(){
   

        User user = new User(null,"张三",23,"zhangsan@baomidou.com");
        int result = userMapper.insert(user);
        System.out.println("result:"+result);
        System.out.println("userid:"+user.getId());
    }

/*
==>  Preparing: INSERT INTO user ( id, name, age, email ) VALUES ( ?, ?, ?, ? )
==> Parameters: 1643803350057201666(Long), 张三(String), 23(Integer), zhangsan@baomidou.com(String)
<==    Updates: 1
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@642505c7]
result:1
userid:1643803350057201666
*/

删除

    @Test
    public void testDelete(){
   
        //通过id删除
        int result = userMapper.deleteById(1643803350057201666L);
        System.out.println("result:"+result);
    }

/*
==>  Preparing: DELETE FROM user WHERE id=?
==> Parameters: 1643803350057201666(Long)
<==    Updates: 1
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@2d9f64c9]
result:1
*/
    @Test
    public void testDelete(){
   
        //通过map来删除
        Map<String,Object> map = new HashMap<>();
        map.put("name","张三");
        map.put("age",23);
        int result = userMapper.deleteByMap(map);
        System.out.println("result"+result);
    }

/*
==>  Preparing: DELETE FROM user WHERE name = ? AND age = ?
==> Parameters: 张三(String), 23(Integer)
<==    Updates: 1
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@4339e0de]
result1
*/
    @Test
    public void testDelete(){
   
        //通过多个id实现批量删除
        List<Long> list = Arrays.asList(4L, 5L);
        int result = userMapper.deleteBatchIds(list);
        System.out.println("result"+result);
    }

/*
==>  Preparing: DELETE FROM user WHERE id IN ( ? , ? )
==> Parameters: 4(Long), 5(Long)
<==    Updates: 2
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@21ac5eb4]
result2
*/

修改

    @Test
    public void testUpdate(){
   
        //根据id修改用户信息
        User user = new User();
        user.setId(1L);
        user.setName("Lili");
        user.setAge(15);
        int result = userMapper.updateById(user);
        System.out.println("result"+result);
    }

/*
==>  Preparing: UPDATE user SET name=?, age=? WHERE id=?
==> Parameters: Lili(String), 15(Integer), 1(Long)
<==    Updates: 1
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@61d84e08]
result1
*/

查询

    @Test
    public void testSelect(){
   
        //根据id查询
        User result = userMapper.selectById(1L);
        System.out.println("result"+result);
    }

/*
==>  Preparing: SELECT id,name,age,email FROM user WHERE id=?
==> Parameters: 1(Long)
<==    Columns: id, name, age, email
<==        Row: 1, Lili, 15, test1@baomidou.com
<==      Total: 1
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@52d6cd34]
resultUser(id=1, name=Lili, age=15, email=test1@baomidou.com)
*/
    @Test
    public void testSelect(){
   
        //根据多个id查询多个用户信息
        List<Long> list = Arrays.asList(1L, 2L, 3L, 4L);
        List<User> result = userMapper.selectBatchIds(list);
        result.forEach(System.out::println);
    }

/*
==>  Preparing: SELECT id,name,age,email FROM user WHERE id IN ( ? , ? , ? , ? )
==> Parameters: 1(Long), 2(Long), 3(Long), 4(Long)
<==    Columns: id, name, age, email
<==        Row: 1, Lili, 15, test1@baomidou.com
<==        Row: 2, Jack, 20, trst2@baomidou.com
<==        Row: 3, Tom, 28, test3@baomidou.com
<==        Row: 4, 张三, 23, zhangsan@baomidou.com
<==      Total: 4
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@6428591a]
User(id=1, name=Lili, age=15, email=test1@baomidou.com)
User(id=2, name=Jack, age=20, email=trst2@baomidou.com)
User(id=3, name=Tom, age=28, email=test3@baomidou.com)
User(id=4, name=张三, age=23, email=zhangsan@baomidou.com)
*/
    @Test
    public void testSelect(){
   
        //根据map查询
        Map<String,Object> map = new HashMap<>();
        map.put("name","张三");
        map.put("age",23);
        List<User> result = userMapper.selectByMap(map);
        result.forEach(System.out::println);
    }

/*
==>  Preparing: SELECT id,name,age,email FROM user WHERE name = ? AND age = ?
==> Parameters: 张三(String), 23(Integer)
<==    Columns: id, name, age, email
<==        Row: 4, 张三, 23, zhangsan@baomidou.com
<==      Total: 1
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@c2e3264]
User(id=4, name=张三, age=23, email=zhangsan@baomidou.com)
*/
    @Test
    public void testSelect(){
   
        //根据id查询
//        User result = userMapper.selectById(1L);
//        System.out.println("result"+result);
        //根据多个id查询多个用户信息
//        List<Long> list = Arrays.asList(1L, 2L, 3L, 4L);
//        List<User> result = userMapper.selectBatchIds(list);
//        result.forEach(System.out::println);
        //根据map查询
//        Map<String,Object> map = new HashMap<>();
//        map.put("name","张三");
//        map.put("age",23);
//        List<User> result = userMapper.selectByMap(map);
//        result.forEach(System.out::println);
        //查询所有数据
        List<User> users = userMapper.selectList(null);
        users.forEach(System.out::println);
    }

/*
==>  Preparing: SELECT id,name,age,email FROM user
==> Parameters: 
<==    Columns: id, name, age, email
<==        Row: 1, Lili, 15, test1@baomidou.com
<==        Row: 2, Jack, 20, trst2@baomidou.com
<==        Row: 3, Tom, 28, test3@baomidou.com
<==        Row: 4, 张三, 23, zhangsan@baomidou.com
<==        Row: 5, 李四, 24, lisi@baomidou.com
<==      Total: 5
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@57c47a9e]
User(id=1, name=Lili, age=15, email=test1@baomidou.com)
User(id=2, name=Jack, age=20, email=trst2@baomidou.com)
User(id=3, name=Tom, age=28, email=test3@baomidou.com)
User(id=4, name=张三, age=23, email=zhangsan@baomidou.com)
User(id=5, name=李四, age=24, email=lisi@baomidou.com)
*/

自定义功能

@Mapper
public interface UserMapper extends BaseMapper<User> {
   

    /**
     * 根据id查询用户信息,返回map
     * @param id
     * @return
     */
    Map<String,Object> selectMapById(Long id);
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--namespace=绑定一个对应的Dao/Mapper接口-->
&
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值