栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

mybatisplus入门

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

mybatisplus入门

快速入门 创建表

创建数据库haoke

CREATE TABLE `user` (
`id` bigint(20) NOT NULL COMMENT '主键ID', `name` varchar(30) DEFAULT NULL COMMENT '姓名', `age` int(11) DEFAULT NULL COMMENT '年龄', `email` varchar(50) DEFAULT NULL COMMENT '邮箱', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 
-- 插入数据 
INSERT INTO `user` (`id`, `name`, `age`, `email`) VALUES ('1', 'Jone', '18', 'test1@baomidou.com'); INSERT INTO `user` (`id`, `name`, `age`, `email`) VALUES ('2', 'Jack', '20', 'test2@baomidou.com'); INSERT INTO `user` (`id`, `name`, `age`, `email`) VALUES ('3', 'Tom', '28', 'test3@baomidou.com'); INSERT INTO `user` (`id`, `name`, `age`, `email`) VALUES ('4', 'Sandy', '21', 'test4@baomidou.com'); INSERT INTO `user` (`id`, `name`, `age`, `email`) VALUES ('5', 'Billie', '24', 'test5@baomidou.com');

创建工程以及导入依赖

groupid:cn.itcast.mybatisplus
artifactid:itcast-mybatis-plus



    4.0.0

    
        org.springframework.boot
        spring-boot-starter-parent
        2.1.0.RELEASE
    

    cn.itcast.mybatisplus
    itcast-mybatis-plus
    1.0-SNAPSHOT

    
        
            org.springframework.boot
            spring-boot-starter
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
        
        
            com.baomidou
            mybatis-plus-boot-starter
            3.0.5
        
        
        
            mysql
            mysql-connector-java
            5.1.47
        
        
        
            org.projectlombok
            lombok
            true
            1.18.4
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    



编写application.properties文件
spring.application.name = itcast-mybatis-plus

spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://192.168.58.136:3306/haoke?useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true&useSSL=false
spring.datasource.username=root
spring.datasource.password=root
创建User对象
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;

@Data
public class User {

    @TableId(value = "ID", type = IdType.AUTO)
    private Long id;
    private String name;
    private Integer age;
    private String email;

}
编写UserMapper
import cn.itcast.mybatisplus.pojo.User;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;

public interface UserMapper extends BaseMapper {

}
编写springboot启动类
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;

@MapperScan("cn.itcast.mybatisplus.mapper") //设置mapper接口的扫描包
@SpringBootApplication
public class MyApplication {

    
    @Bean
    public PaginationInterceptor paginationInterceptor() {
        return new PaginationInterceptor();
    }

    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }

}
编写单元测试用例
import cn.itcast.mybatisplus.pojo.User;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.junit.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 UserMaperTest {
	 @Autowired
    private UserMapper userMapper;

    @Test
    public void testSelect(){
        List users = this.userMapper.selectList(null);
        for (User user : users) {
            System.out.println(user);
        }
    }
}


测试结果

BaseMapper

在MybatisPlus中,BaseMapper中定义了一些常用的CRUD方法,当我们自定义的Mapper接口继承BaseMapper后即可拥有了这些方法。

public interface BaseMapper {

int insert(T entity);

int deleteById(Serializable id);

int deleteByMap(@Param(Constants.COLUMN_MAP) Map columnMap);

int delete(@Param(Constants.WRAPPER) Wrapper queryWrapper);

int deleteBatchIds(@Param(Constants.COLLECTION) Collection idList);

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

int update(@Param(Constants.ENTITY) T entity, @Param(Constants.WRAPPER)
Wrapper updateWrapper);

T selectById(Serializable id);

List selectBatchIds(@Param(Constants.COLLECTION) Collection idList);

List selectByMap(@Param(Constants.COLUMN_MAP) Map
columnMap);

T selectOne(@Param(Constants.WRAPPER) Wrapper queryWrapper);

Integer selectCount(@Param(Constants.WRAPPER) Wrapper queryWrapper);

List selectList(@Param(Constants.WRAPPER) Wrapper queryWrapper);

List> selectMaps(@Param(Constants.WRAPPER) Wrapper
queryWrapper);

List selectObjs(@Param(Constants.WRAPPER) Wrapper queryWrapper);

IPage selectPage(IPage page, @Param(Constants.WRAPPER) Wrapper
queryWrapper);

IPage> selectMapsPage(IPage page,
@Param(Constants.WRAPPER) Wrapper queryWrapper);
 
like查询 
@Test
    public void testSelectByLike(){
        QueryWrapper wrapper = new QueryWrapper();
        wrapper.like("name", "o");
        List list = this.userMapper.selectList(wrapper);
        for (User user : list) {
            System.out.println(user);
        }
    }
条件查询
@Test
    public void testSelectByLe(){
        QueryWrapper wrapper = new QueryWrapper();
        wrapper.le("age", 20);
        List list = this.userMapper.selectList(wrapper);
        for (User user : list) {
            System.out.println(user);
        }
    }
插入数据
 @Test
    public void testSave(){
        User user = new User();
        user.setAge(25);
        user.setEmail("zhangsan@qq.com");
        user.setName("zhangsan");
        int count = this.userMapper.insert(user);
        System.out.println("新增数据成功! count => " + count);
    }

设置自增长id

public class User {

    @TableId(value = "ID", type = IdType.AUTO)
    private Long id;
    private String name;
    private Integer age;
    private String email;

}
删除数据
    @Test
    public void testDelete(){
        this.userMapper.deleteById(7L);
        System.out.println("删除成功!");
    }
修改数据

根据id修改数据,修改不为null的字段

@Test
    public void testUpdate(){
        User user = new User();
        user.setId(6L);
        user.setName("lisi");
        this.userMapper.updateById(user);
        System.out.println("修改成功!");
    }
分页查询

首先需要在启动类上配置分页插件:

import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;

@MapperScan("cn.itcast.mybatisplus.mapper") //设置mapper接口的扫描包
@SpringBootApplication
public class MyApplication {

    
    @Bean
    public PaginationInterceptor paginationInterceptor() {
        return new PaginationInterceptor();
    }

    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }

}

进行查询

 @Test
    public void testSelectPage() {
        Page page = new Page<>(2, 2);
        IPage userIPage = this.userMapper.selectPage(page, null);
        System.out.println("总条数 ------> " + userIPage.getTotal());
        System.out.println("当前页数 ------> " + userIPage.getCurrent());
        System.out.println("当前每页显示数 ------> " + userIPage.getSize());
        List records = userIPage.getRecords();
        for (User user : records) {
            System.out.println(user);
        }
    }
配置

虽然在MybatisPlus中可以实现零配置,但是有些时候需要我们自定义一些配置,就需要使用Mybatis原生的一些配置文件方式了。
application.properties:

# 指定全局配置文件
mybatis-plus.config-location = classpath:mybatis-config.xml
# 指定mapper.xml文件
mybatis-plus.mapper-locations = classpath*:mybatis/*.xml
Lombok

lombok 提供了简单的注解的形式来帮助我们简化消除一些必须有但显得很臃肿的 java 代码,尤其是针对pojo,在MybatisPlus中使用lombok

配置安装

导入依赖:



org.projectlombok
lombok
true
1.18.4

安装IDEA插件:

常用注解

@Data:注解在类上;提供类所有属性的 getting 和 setting 方法,此外还提供了equals、canEqual、
hashCode、toString 方法
@Setter:注解在属性上;为属性提供 setting 方法
@Getter:注解在属性上;为属性提供 getting 方法
@Slf4j:注解在类上;为类提供一个 属性名为log 的 slf4j日志对象
@NoArgsConstructor:注解在类上;为类提供一个无参的构造方法
@AllArgsConstructor:注解在类上;为类提供一个全参的构造方法
@Builder:使用Builder模式构建对象

@Slf4j
@Data
@AllArgsConstructor
@Builder
public class Item {

    private Long id;
    private String title;
    private Long price;

    public Item() {
        log.info("写日志。。。。。");
    }

    public static void main(String[] args) {
        Item item =  Item.builder().price(100L)
                .title("hello").id(1L).build();
        
        System.out.println(item);
    }
}
使用lombok改造User对象

将前面测试的User对象进行改造。

@Data
public class User {

    @TableId(value = "ID", type = IdType.AUTO)
    private Long id;
    private String name;
    private Integer age;
    private String email;

}
源代码

链接:https://pan.baidu.com/s/1pr57SuwWi9mL5_sTT0Unjw?pwd=b14o
提取码:b14o
–来自百度网盘超级会员V3的分享

转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号