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

Mybatis-Plus:了解Mybatis-Plus、快速开始(Mybatis + Mybatis-Plus,Mybatis-Plus自动做了属性映射)

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

Mybatis-Plus:了解Mybatis-Plus、快速开始(Mybatis + Mybatis-Plus,Mybatis-Plus自动做了属性映射)

01:Mybatis-Plus:了解Mybatis-Plus、快速开始(Mybatis + Mybatis-Plus,Mybatis-Plus自动做了属性映射)

02:Mybatis-Plus:快速开始(Spring + Mybatis + Mabatis-Plus)

03:Mybatis-Plus:快速开始(SpringBoot + Mybatis + Mybatis)

1. 了解Mybatis-Plus
1.1 Mybatis-Plus介绍

MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

Mybatis-Plus官网

我们打开官方的指南


1.2 Mybatis-Plus特性:摘自官网


1.3 Mybatis-Plus架构


1.4 Mybatis-Plus作者介绍

Mybatis-Plus是由 baomidou(苞米豆)组织开发并且开源的,目前该组织大概有16人左右。


2. 快速开始 环境准备

对于Mybatis整合MP有常常有三种用法,分别是Mybatis+MP、Spring+Mybatis+MP、Spring Boot+Mybatis+MP。


2.1 创建数据

Navicat执行下列SQL语句

CREATE DATAbase mp;
USE mp;

-- 创建测试表
CREATE TABLE `tb_user` (
	`id` BIGINT ( 20 ) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
	`user_name` VARCHAR ( 20 ) NOT NULL COMMENT '用户名',
	`password` VARCHAR ( 20 ) NOT NULL COMMENT '密码',
	`name` VARCHAR ( 30 ) DEFAULT NULL COMMENT '姓名',
	`age` INT ( 11 ) DEFAULT NULL COMMENT '年龄',
	`email` VARCHAR ( 50 ) DEFAULT NULL COMMENT '邮箱',
	PRIMARY KEY ( `id` ) 
) ENGINE = INNODB AUTO_INCREMENT = 1 DEFAULT CHARSET = utf8;

-- 插入测试数据
INSERT INTO `tb_user` ( `id`, `user_name`, `password`, `name`, `age`, `email` )
VALUES
	( '1', 'zhangsan', '123456', '张三', '18', 'test1@itcast.cn' );
INSERT INTO `tb_user` ( `id`, `user_name`, `password`, `name`, `age`, `email` )
VALUES
	( '2', 'lisi', '123456', '李四', '20', 'test2@itcast.cn' );
INSERT INTO `tb_user` ( `id`, `user_name`, `password`, `name`, `age`, `email` )
VALUES
	( '3', 'wangwu', '123456', '王五', '28', 'test3@itcast.cn' );
INSERT INTO `tb_user` ( `id`, `user_name`, `password`, `name`, `age`, `email` )
VALUES
	( '4', 'zhaoliu', '123456', '赵六', '21', 'test4@itcast.cn' );
INSERT INTO `tb_user` ( `id`, `user_name`, `password`, `name`, `age`, `email` )
VALUES
	( '5', 'sunqi', '123456', '孙七', '24', 'test5@itcast.cn' );

执行结果:


2.2 创建工程 导入依赖

创建工程:

导入依赖:

pom.xml



    4.0.0

    com.tian
    mybatis_plus_project
    1.0-SNAPSHOT

    
        8
        8
    

    
        
        
            com.baomidou
            mybatis-plus
            3.3.2
        
        
        
            mysql
            mysql-connector-java
            8.0.25
        
        
        
            com.alibaba
            druid
            1.2.6
        
        
        
            org.projectlombok
            lombok
            true
            1.18.20
        
        
        
            junit
            junit
            4.12
        
        
        
            org.slf4j
            slf4j-log4j12
            1.7.30
        
    

    
    
        
            
                org.apache.maven.plugins
                maven-compiler-plugin
                
                    1.8
                    1.8
                
            
        
    


3. Mybatis + Mybatis-Plus

下面演示,通过纯Mybatis与Mybatis-Plus整合。


3.1 创建子Module


3.2 编写log4j的日志文件


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

3.3 编写mybatis配置文件

mybatis-config.xml




    
        
            
            
                
                
                
                
            
        
    
    
        
    


3.4 编写User实体对象


User.java

package pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data // get / set 方法
@NoArgsConstructor // 无参构造函数
@AllArgsConstructor // 有参构造函数
public class User {

    private Long id;
    private String userName;
    private String password;
    private String name;
    private Integer age;
    private String email;
}

3.5 编写UserMapper接口


UserMapper.java

package mapper;

import pojo.User;

import java.util.List;

public interface UserMapper {
// 接口中方法默认为public
    List findAll();
}

3.6 编写UserMapper.xml映射文件

UserMapper.xml





    
        select id, user_name as 'userName', password, name, age, email
        from mp.tb_user
    


运行结果:


3.7 Mybatis+MP实现查询User

第一步,将UserMapper继承baseMapper,将拥有了baseMapper中的所有方法:

UserMapper.java

package mapper;


import com.baomidou.mybatisplus.core.mapper.baseMapper;
import pojo.User;

import java.util.List;

public interface UserMapper extends baseMapper {
    List findAll();
}

第二步,使用MP中的MybatisSqlSessionFactoryBuilder进程构建:

TestMybatisPlus.java

import com.baomidou.mybatisplus.core.MybatisSqlSessionFactoryBuilder;
import mapper.UserMapper;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.junit.Test;
import pojo.User;

import java.io.InputStream;
import java.util.List;

public class TestMybatisPlus {

    @Test
    public void testFindAll() throws Exception {

        String config = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(config);
        // 这里使用的是MP中的MybatisSqlSessionFactoryBuilder
        SqlSessionFactory sqlSessionFactory = new MybatisSqlSessionFactoryBuilder().build(inputStream);

        SqlSession sqlSession = sqlSessionFactory.openSession();
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);

        //测试查询 可以使用原来的方法 完全没有问题
//        List users = userMapper.findAll();

        // 现在我们使用MP给我们提供的方法 null就表示没有查询条件 查询所有的数据出来
        List users = userMapper.selectList(null);
        for (User user : users) {
            System.out.println(user);
        }
    }
}

运行结果:

发现运行报错了

解决:在User对象中添加@TableName,指定数据库表名

x现在的运行结果:


3.8 简单说明


由于使用了MybatisSqlSessionFactoryBuilder进行了构建,继承的baseMapper中的方法就载入到了SqlSession中,所以就可以直接使用相关的方法;


4. 附录 baseMapper 源码
package com.baomidou.mybatisplus.core.mapper;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import org.apache.ibatis.annotations.Param;

import java.io.Serializable;
import java.util.Collection;
import java.util.List;
import java.util.Map;




public interface baseMapper extends Mapper {

    
    int insert(T entity);

    
    int deleteById(Serializable id);

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

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

    
    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);

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

    
    >> E selectMapsPage(E page, @Param(Constants.WRAPPER) Wrapper queryWrapper);
}
 


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

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

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