Mybatis Plus入门

简介: Mybatis Plus入门

MyBatis Plus介绍

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

特征

无侵入:Mybatis-Plus 在 Mybatis 的基础上进行扩展,只做增强不做改变,引入 Mybatis-Plus 不会对您现有的 Mybatis 构架产生任何影响,而且 MP 支持所有 Mybatis 原生的特性

依赖少:仅仅依赖 Mybatis 以及 Mybatis-Spring

损耗小:启动即会自动注入基本CURD,性能基本无损耗,直接面向对象操作

预防Sql注入:内置Sql注入剥离器,有效预防Sql注入攻击

通用CRUD操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求

多种主键策略:支持多达4种主键策略(内含分布式唯一ID生成器),可自由配置,完美解决主键问题

框架结构

Mybatis Plus使用

1.导入依赖

<dependency>
      <groupId>com.baomidou</groupId>
      <artifactId>mybatis-plus</artifactId>
      <version>2.0.1</version>
</dependency>

2.MP整合的配置

<!-- 0.连接池属性设置读取指定的properties文件 -->
    <context:property-placeholder location="classpath:db.properties" ignore-unresolvable="true"/>
    
    <!-- 1.将连接池放入spring容器 -->
    <bean name="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="jdbcUrl" value="${jdbc.url}"></property>
        <property name="driverClass" value="${jdbc.driver}"></property>
        <property name="user" value="${jdbc.username}"></property>
        <property name="password" value="${jdbc.password}"></property>
    </bean>
    <bean id="sqlSessionFactory" class="com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <!-- 配置实体扫描路径,多个package可以用分号; 逗号, 分隔, 支持通配符*-->
        <!-- com.a.b.entity;com.a.c.entity;com.d.*.entity-->
        <property name="typeAliasesPackage" value="cn.xm.jwxt.bean.*"/>
        <property name="configuration" ref="mybatisConfig"/>
        <!-- MP 全局配置注入 -->
        <property name="globalConfig" ref="globalConfig"/>
        <property name="plugins">
            <array>
                <!-- 分页插件配置 -->
                <bean id="paginationInterceptor"
                      class="com.baomidou.mybatisplus.plugins.PaginationInterceptor"/>
                <!-- 性能拦截器,兼打印sql,不建议生产环境配置-->
                <bean id="performanceInterceptor"
                      class="com.baomidou.mybatisplus.plugins.PerformanceInterceptor"/>
            </array>
        </property>
    </bean>
    <bean id="mybatisConfig" class="com.baomidou.mybatisplus.MybatisConfiguration">
        <property name="mapUnderscoreToCamelCase" value="true"/>
    </bean>
    <!-- 定义 MP 全局策略 -->
    <bean id="globalConfig" class="com.baomidou.mybatisplus.entity.GlobalConfiguration">
       
        <property name="idType" value="2"/>
        <property name="dbType" value="mysql"/>
        <!-- 全局表为下划线命名设置 true -->
        <property name="dbColumnUnderline" value="true"/>
    </bean>
    <!-- 配置mybatis 扫描mapper接口的路径, 相当于注解@MapperScan,@MapperScan("com.baomidou.mybatisplus.test.h2.entity.mapper")-->
    <bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="cn.xm.jwxt.mapper"/>
    </bean>

3.实体

@TableName(value="employee")
public class Employee {
    
    private Integer id ;
    private String  lastName; 
    private String  email ;
    private Integer gender; 
    private Integer age ;
        
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getLastName() {
        return lastName;
    }
    public void setLastName(String lastName) {
        this.lastName = lastName;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    public Integer getGender() {
        return gender;
    }
    public void setGender(Integer gender) {
        this.gender = gender;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    @Override
    public String toString() {
        return "Employee [id=" + id + ", lastName=" + lastName + ", email=" + email + ", gender=" + gender + ", age="
                + age + "]";
    }
}

4.mapper 接口

public interface EmployeeMapper extends BaseMapper<Employee> {}

5.新增

@Test
public void testCommonInsert() {
    //初始化Employee对象
    Employee employee  = new Employee();
    employee.setLastName("MP");
    employee.setEmail("mp@atguigu.com");
    employee.setGender(1);
    //insert方法在插入时,会根据实体类的每个属性进行非空判断,只有非空的属性对应的字段才会出现到SQL语句中
    Integer result = employeeMapper.insert(employee);
    System.out.println("result: " + result );
    //insertAllColumn方法在插入时,不管属性是否非空, 属性所对应的字段都会出现到SQL语句中.
    Integer result1 = employeeMapper.insertAllColumn(employee);
    System.out.println("result: " + result1 );
    //获取当前数据在数据库中的主键值
    Integer key = employee.getId();
    System.out.println("key:" + key );
}

6.修改

@Test
public void testCommonUpdate() {
    //初始化修改对象
    Employee employee = new Employee();
    employee.setId(7);
    employee.setLastName("王五");
    employee.setEmail("xz@sina.com");
    employee.setGender(0);
    //updateById方法在修改时,会根据实体类的每个属性进行非空判断,只有非空的属性对应的字段才会出现到SQL语句中
    Integer result = employeeMapper.updateById(employee);
    System.out.println("result: " + result );
    //updateAllColumnById方法在修改时,不管属性是否非空, 属性所对应的字段都会出现到SQL语句中.
    Integer result1 = employeeMapper.updateAllColumnById(employee);
    System.out.println("result: " + result1 );
}

7.查询

@Test
public void  testCommonSelect() {
    //1. 通过id查询
    Employee employee = employeeMapper.selectById(7);
    System.out.println(employee);
    //2. 通过多个列进行查询。selectOne查询结果只能是一条,否则报错
    Employee  employee1 = new Employee();
    employee.setLastName("王五");
    employee.setGender(0);
    Employee result = employeeMapper.selectOne(employee1);
    System.out.println("result: " +result );
    //3. 通过多个id进行查询
    List<Integer> idList = new ArrayList<>();
    idList.add(4);
    idList.add(5);
    idList.add(6);
    idList.add(7);
    List<Employee> emps = employeeMapper.selectBatchIds(idList);
    System.out.println(emps);
    //4. 通过Map封装条件查询。map中的key是数据库中字段名
    Map<String,Object> columnMap = new HashMap<>();
    columnMap.put("last_name", "Tom");
    columnMap.put("gender", 1);
    List<Employee> emps1 = employeeMapper.selectByMap(columnMap);
    System.out.println(emps1);
    //5. 分页查询
    List<Employee> emps2 = employeeMapper.selectPage(new Page<>(3, 2), null);
    System.out.println(emps2);
}

8.删除

@Test
public void testCommonDelete() {
    //1 .根据id进行删除
    Integer result = employeeMapper.deleteById(13);
    System.out.println("result: " + result );
    //2. 根据条件进行删除
    Map<String,Object> columnMap = new HashMap<>();
    columnMap.put("last_name", "MP");
    columnMap.put("email", "mp@atguigu.com");
    Integer result1 = employeeMapper.deleteByMap(columnMap);
    System.out.println("result: " + result1 );
    //3. 批量删除
    List<Integer> idList = new ArrayList<>();
    idList.add(3);
    idList.add(4);
    idList.add(5);
    Integer result2 = employeeMapper.deleteBatchIds(idList);
    System.out.println("result: " + result2 );
}
相关文章
|
2月前
|
前端开发 Java Apache
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
本文详细讲解了如何整合Apache Shiro与Spring Boot项目,包括数据库准备、项目配置、实体类、Mapper、Service、Controller的创建和配置,以及Shiro的配置和使用。
542 1
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
|
2月前
|
SQL Java 数据库连接
Mybatis入门(select标签)
这篇文章介绍了Mybatis中`select`标签的基本用法及其相关属性,并通过示例展示了如何配置和执行SQL查询语句。
52 0
Mybatis入门(select标签)
|
4月前
|
Java 数据库连接 Spring
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
文章是关于Spring、SpringMVC、Mybatis三个后端框架的超详细入门教程,包括基础知识讲解、代码案例及SSM框架整合的实战应用,旨在帮助读者全面理解并掌握这些框架的使用。
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
|
5月前
|
Java 数据库连接 测试技术
mybatis plus 获取新增实体的主键
mybatis plus 获取新增实体的主键
173 8
|
5月前
|
Java 数据库连接 数据库
mybatis plus 更新值为null的字段
mybatis plus 更新值为null的字段
67 7
|
4月前
|
SQL Java 数据库连接
Spring Boot联手MyBatis,打造开发利器:从入门到精通,实战教程带你飞越编程高峰!
【8月更文挑战第29天】Spring Boot与MyBatis分别是Java快速开发和持久层框架的优秀代表。本文通过整合Spring Boot与MyBatis,展示了如何在项目中添加相关依赖、配置数据源及MyBatis,并通过实战示例介绍了实体类、Mapper接口及Controller的创建过程。通过本文,你将学会如何利用这两款工具提高开发效率,实现数据的增删查改等复杂操作,为实际项目开发提供有力支持。
291 0
|
5月前
|
Java 数据库连接 Spring
搭建 spring boot + mybatis plus 项目框架并进行调试
搭建 spring boot + mybatis plus 项目框架并进行调试
105 4
|
5月前
|
SQL Java 数据库连接
idea中配置mybatis 映射文件模版及 mybatis plus 自定义sql
idea中配置mybatis 映射文件模版及 mybatis plus 自定义sql
115 3
|
5月前
|
Java 数据库连接 数据库
mybatis plus 中增删改查及Wrapper的使用
mybatis plus 中增删改查及Wrapper的使用
259 3
|
5月前
|
算法 Java 数据库连接
mybatis plus 主键策略
mybatis plus 主键策略
62 2