当前位置:网站首页 > Java基础 > 正文

java基础系列18



本文搭配千锋最新Mybatis教程食用更佳~


Mybatis-Plus概念

1.1 Mybatis-Plus介绍

官⽹: https://mybatis.plus/ 或 https://mp.baomidou.com/

Mybatis-Plus介绍

MyBatis-Plus(简称 MP)是⼀个 MyBatis 的增强⼯具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提⾼效率⽽⽣

 

1.2 特性

⽆侵⼊:只做增强不做改变,引⼊它不会对现有⼯程产⽣影响,如丝般顺滑

损耗⼩:启动即会⾃动注⼊基本 CURD,性能基本⽆损耗,直接⾯向对象操作

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

⽀持 Lambda 形式调⽤:通过 Lambda 表达式,⽅便的编写各类查询条件,⽆需再担⼼字段写错

⽀持主键⾃动⽣成:⽀持多达 4 种主键策略(内含分布式唯⼀ ID ⽣成器 - Sequence),可⾃由配置,完美解决主键问题

⽀持 ActiveRecord 模式:⽀持 ActiveRecord 形式调⽤,实体类只需继承 Model 类即可进⾏强⼤的 CRUD 操作

⽀持⾃定义全局通⽤操作:⽀持全局通⽤⽅法注⼊( Write once, use anywhere )

内置代码⽣成器:采⽤代码或者 Maven 插件可快速⽣成 Mapper 、 Model ,Service 、Controller 层代码,⽀持模板引擎,更有超多⾃定义配置等您来使⽤

内置分⻚插件:基于 MyBatis 物理分⻚,开发者⽆需关⼼具体操作,配置好插件之后,写分⻚等同于普通 List 查询

分⻚插件⽀持多种数据库:⽀持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer 等多种数据库

内置性能分析插件:可输出 Sql 语句以及其执⾏时间,建议开发测试时启⽤该功能,能快速揪出慢查询

内置全局拦截插件:提供全表 delete 、 update 操作智能分析阻断,也可⾃定义拦截规则,预防 误操作

 

1.3

1.4 作者

Mybatis-Plus是由baomidou(苞⽶⾖)组织开发并且开源的,⽬前该组织⼤概有30⼈左右。

码云地址:https://gitee.com/organizations/baomidou

 

 

2. Mybatis-Plus快速⼊⻔

 

2.1 安装

全新的 MyBatis-Plus 3.0 版本基于 JDK8,提供了 lambda 形式的调⽤,所以安装集成 MP3.0 要求

如下:

JDK 8+

Maven or Gradle

Release

Spring Boot

Maven:

<dependency>

 <groupId>com.baomidou</groupId>

 <artifactId>mybatis-plus-boot-starter</artifactId>

 <version>3.4.0</version>

</dependency>

 

Spring MVC

maven

<dependency>

 <groupId>com.baomidou</groupId>

 <artifactId>mybatis-plus</artifactId>

 <version>3.4.0</version>

</dependency>

java基础系列18

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

Boot+Mybatis+MP。

 

2.2 创建数据库以及表

创建User表,其表结构如下:

-- 创建测试表

DROP TABLE IF EXISTS tb_user;

CREATE TABLE user

(

id BIGINT(20) NOT NULL COMMENT '主键ID',

name VARCHAR(30) NULL DEFAULT NULL   COMMENT '姓名',

age INT(11) NULL DEFAULT NULL COMMENT '年龄',

email VARCHAR(50) NULL DEFAULT NULL   COMMENT '邮箱',

PRIMARY KEY (id)

);

-- 插⼊测试数据

INSERT INTO user (id, name, age, email) VALUES

(1, 'Jone', 18, ''),

(2, 'Jack', 20, ''),

(3, 'Tom', 28, ''),

(4, 'Sandy', 21, ''),

(5, 'Billie', 24, '');

 

2.3 创建⼯程

创建maven项目

<dependencies>

 <!--   mybatis-plus插件依赖 -->

 <dependency>

 <groupId>com.baomidou</groupId>

 <artifactId>mybatis-plus</artifactId>

 <version>3.1.1</version>

 </dependency>

 <!--Mysql-->

 <dependency>

 <groupId>mysql</groupId>

 <artifactId>mysql-connector-java</artifactId>

 <version>5.1.47</version>

 </dependency>

 <!--连接池-->

 <dependency>

 <groupId>com.alibaba</groupId>

 <artifactId>druid</artifactId>

 <version>1.0.11</version>

 </dependency>

 <!--简化bean代码的⼯具包-->

 <dependency>

 <groupId>org.projectlombok</groupId>

 <artifactId>lombok</artifactId>

 <version>1.18.4</version>

2.4 Mybatis + MP

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

创建⼦Module

 </dependency>

 <dependency>

 <groupId>junit</groupId>

 <artifactId>junit</artifactId>

 <version>4.12</version>

 </dependency>

 <dependency>

 <groupId>org.slf4j</groupId>

 <artifactId>slf4j-log4j12</artifactId>

 <version>1.6.4</version>

 </dependency>

 </dependencies>

 <build>

 <plugins>

 <plugin>

 <groupId>org.apache.maven.plugins</groupId>

 <artifactId>maven-compiler-plugin</artifactId>

 <configuration>

 <source>1.8</source>

 <target>1.8</target>

 </configuration>

 </plugin>

 </plugins>

 </build>

2.4 Mybatis + MP

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

 

创建⼦Module

<?xml   version="1.0"     encoding="UTF-8" ?>

<project     xmlns="http://maven.apache.org/POM/4.0.0"

 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0

http://maven.apache.org/xsd/maven-4.0.0.xsd">

 <parent>

 <artifactId>lagou-mybatis-plus</artifactId>

 <groupId>com.lagou.mp</groupId>

 <version>1.0-SNAPSHOT</version>

 </parent>

 <modelVersion>4.0.0</modelVersion>

Mybatis实现查询User

第⼀步,编写mybatis-config.xml⽂件:

 <artifactId>lagou-mybatis-plus-simple</artifactId>

</project>

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

 

Mybatis实现查询User

第⼀步,编写mybatis-config.xml⽂件:

<?xml   version="1.0"     encoding="UTF-8" ?>

<!DOCTYPE   configuration

 PUBLIC   "-//mybatis.org//DTD Config   3.0//EN"

 "http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>

 <properties   resource="jdbc.properties"></properties>

 <!--environments:   运⾏环境-->

 <environments   default="development">

 <environment   id="development">

 <!--当前的事务事务管理器是JDBC-->

 <transactionManager     type="JDBC"></transactionManager>

 <!--数据源信息   POOLED:使⽤mybatis的连接池-->

 <dataSource   type="POOLED">

 <property   name="driver"   value="${jdbc.driver}"/>

 <property   name="url"   value="${jdbc.url}"/>

 <property   name="username"   value="${jdbc.username}"/>

 <property   name="password"   value="${jdbc.password}"/>

 </dataSource>

 </environment>

 </environments>

 <!--引⼊映射配置⽂件-->

 <mappers>

 <mapper     resource="mapper/UserMapper.xml"></mapper>

 </mappers>

</configuration>

 

第⼆步,编写User实体对象:(这⾥使⽤lombok进⾏了进化bean操作)

@Data // getter setter   @toString

@NoArgsConstructor

@AllArgsConstructor

public class User {

 private Long   id;

 private   String name;

 private   Integer age;

 private   String email; }

第三步,编写UserMapper接⼝:

public interface UserMapper {

List<User> findAll();

}

 

第四步,编写UserMapper.xml⽂件:

<?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">  

<mapper namespace="com.zy.mapper.UserMapper">

<!-- 查询所有   -->

<select id="findAll"   resultType="com.zy.pojo.User">

select * from user

</select>

</mapper>

 

第五步,编写TestMybatis测试⽤例:

public class MPTest {

@Test

public void test1() throws IOException {

InputStream   resourceAsStream =

Resources.getResourceAsStream("sqlMapConfig.xml");测试结果:

注:如果实体类名称和表名称不⼀致,可以在实体类上添加注解@TableName("指定数据库表名")

SqlSessionFactory   sqlSessionFactory = new

SqlSessionFactoryBuilder().build(resourceAsStream);

SqlSession sqlSession = sqlSessionFactory.openSession();

UserMapper mapper = sqlSession.getMapper(UserMapper.class);

List<User> all = mapper.findAll();

for (User   user : all) {

System.out.println(user);

}

}

}

 

 

 

 

Mybatis+MP实现查询

 

第⼀步,将UserMapper继承BaseMapper,将拥有了BaseMapper中的所有⽅法:

import com.baomidou.mybatisplus.core.mapper.BaseMapper;

import com.zy.pojo.User;

public interface UserMapper extends BaseMapper<User> {

}

 

第⼆步,使⽤MP中的MybatisSqlSessionFactoryBuilder进程构建:

@Test

public void test2() throws   IOException {

InputStream resourceAsStream =

Resources.getResourceAsStream("sqlMapConfig.xml");

//这⾥使⽤的是MP中的MybatisSqlSessionFactoryBuilder

SqlSessionFactory   sqlSessionFactory = new

MybatisSqlSessionFactoryBuilder().build(resourceAsStream);

SqlSession sqlSession = sqlSessionFactory.openSession();

UserMapper mapper = sqlSession.getMapper(UserMapper.class);

// 可以调⽤BaseMapper中定义的⽅法

List<User> all = mapper.selectList(null);

for (User   user : all) {

 

System.out.println(user);

}

}

 

注:如果实体类名称和表名称不⼀致,可以在实体类上添加注解@TableName("指定数据库表名")

简单说明:

由于使⽤了 MybatisSqlSessionFactoryBuilder进⾏了构建,继承的BaseMapper中的⽅法就载⼊

到了

SqlSession中,所以就可以直接使⽤相关的⽅法;

  • 上一篇: 安卓java基础
  • 下一篇: java基础笔记汇总
  • 版权声明


    相关文章:

  • 安卓java基础2025-04-12 21:42:06
  • 学java基础变量2025-04-12 21:42:06
  • java基础上机题2025-04-12 21:42:06
  • java基础字2025-04-12 21:42:06
  • java jsp 基础教学2025-04-12 21:42:06
  • java基础笔记汇总2025-04-12 21:42:06
  • java se 基础2025-04-12 21:42:06
  • Java基础代码题目2025-04-12 21:42:06
  • java基础+epub2025-04-12 21:42:06
  • java基础入门 课后2025-04-12 21:42:06