上传网站到空间,北京传媒公司排名,网站后台登录界面下载,高端网站设计制作的最开始#xff0c;我们要在Java中使用数据库时#xff0c;需要使用JDBC#xff0c;创建Connection、ResultSet等#xff0c;然后我们又对JDBC的操作进行了封装#xff0c;创建了许多类似于DBUtil等工具类。再慢慢的#xff0c;出现了一系列持久层的框架#xff1a;Hiber… 最开始我们要在Java中使用数据库时需要使用JDBC创建Connection、ResultSet等然后我们又对JDBC的操作进行了封装创建了许多类似于DBUtil等工具类。再慢慢的出现了一系列持久层的框架Hibernate、JPA和MyBatis等。
其实利用MyBatis 来进行持久层的开发已经大大减少了工作人员的工作量了但它的使用还是需要一定的门槛的。Mybatis-Plus的出现进一步降低了这道槛。那我们今天就来看看Mybatis-Plus到底是如何进一步实现MyBatis的增强的。
1.MyBatis-Plus简介
MyBatis-Plus官网地址 https://baomidou.com MyBatis-Plus简称MP是一个MyBatis的增强工具在MyBatis的基础上只做增强不做改变为简化开发、提高效率而生。MP的愿景是成为MyBatis最好的搭档就像魂斗罗中的1P、2P基友搭配效率翻倍。
MyBatis-Plus特性
无侵入只做增强不做改变引入它不会对现有工程产生影响如丝般顺滑。损耗小启动即会自动注入基本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操作智能分析阻断也可自定义拦截规则预防误操作。
支持数据库
任何能使用MyBatis进行CRUD并且支持标准SQL的数据库具体支持情况如下
MySQLOracleDB2H2HSQLSQLitePostgreSQLSQLServerPhoenixGauss ClickHouseSybaseOceanBaseFirebirdCubridGoldilockscsiidb。达梦数据库虚谷数据库人大金仓数据库南大通用华库数据库南大通用数据库神通数据库瀚高数据库。
使用SpringBoot整合MyBatis-Plus
MyBatis-Plus部署配置
1.引入依赖。在pom.xml文件中添加Mybatis-Plus依赖。 dependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependency!-- MyBatis依赖启动器 --!--dependencygroupIdorg.mybatis.spring.boot/groupIdartifactIdmybatis-spring-boot-starter/artifactIdversion2.2.0/version/dependency--!-- MySQL数据库连接驱动 --dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdscoperuntime/scope/dependency!-- 阿里巴巴的Druid数据源依赖启动器 --dependencygroupIdcom.alibaba/groupIdartifactIddruid-spring-boot-starter/artifactIdversion1.1.17/version/dependency!-- 添加Mybatis-Plus依赖 --dependencygroupIdcom.baomidou/groupIdartifactIdmybatis-plus-boot-starter/artifactIdversion3.5.2/version/dependency
/dependencies2.编写实体类。在springbootdata数据库中创建products商品信息表并插入数据。
CREATE TABLE t_product (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(50), #商品名称price DOUBLE,flag VARCHAR(2), #上架状态goods_desc VARCHAR(100), #商品描述images VARCHAR(400), #商品图片goods_stock INT, #商品库存goods_type VARCHAR(20), #商品类型created_user VARCHAR(20) COMMENT 日志-创建人,created_time DATETIME COMMENT 日志-创建时间,modified_user VARCHAR(20) COMMENT 日志-最后修改执行人,modified_time DATETIME COMMENT 日志-最后修改时间
);INSERT INTO t_product VALUES (NULL,HUAWEI P60, 6999, 1, 华为P60 5G手机 分期 麒麟990 晨曦金 8256GB, https://img14.360buyimg.com/5f4da578E7c6efde1/2cd53a53083ab2ed.jpg, 99, 1,admin, 2022-11-04 15:46:55, Tom, 2022-11-04 15:46:55);3.在com.cy.domain包下创建Product实体类。 package com.cy.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;Data
TableName(t_product) // 表明注解标识实体类对应的表
public class Product implements Serializable {TableId(type IdType.AUTO) // 注解注解private Integer id;private String name;private double price;private String flag;// TableField(goods_desc) // 字段注解(非主键)private String goodsDesc;private String images;private long goodsStock;private String goodsType;private String createdUser;private Date createdTime;private String modifiedUser;private Date modifiedTime;
}4.定义Mapper。在com.cy.mapper包下创建ProductMapper接口并继承BaseMapper接口。
package com.cy.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.cy.domain.Product;
import org.apache.ibatis.annotations.Mapper;Mapper
public interface ProductMapper extends BaseMapperProduct {}MyBatis-Plus的Mapper层接口需要配置扫描配置方式有两种
直接在Mapper层使用Mapper注解修饰Mapper接口。在项目的启动类上添加MapperScan(“com.cy.mapper”)包扫描。 5.配置properties。在application.properties配置文件中将原有的MyBatis配置删除改写为MyBatis-Plus的配置。
# 开启驼峰命名匹配映射
# mybatis.configuration.map-underscore-to-camel-casetrue
# 配置MyBatis的XML配置文件位置
# mybatis.mapper-locationsclasspath:mapper/*.xml
# 配置XML映射文件中指定的实体类别名路径
# mybatis.type-aliases-packagecom.cy.domain# 输出SQL语句
mybatis-plus.configuration.log-implorg.apache.ibatis.logging.stdout.StdOutImpl
# 配置MyBatis的XML配置文件位置
mybatis-plus.mapper-locationsclasspath:mapper/*.xml
# 配置XML映射文件中指定的实体类别名路径
mybatis-plus.type-aliases-packagecom.cy.domain说明MyBatis-Plus默认开启了驼峰命名匹配映射。 MyBatis-Plus增删改查操作
1.新增数据操作。在com.cy测试包下编写MyBatisPlusTests测试类并添加插入数据操作的测试方法。 package com.cy;
import com.cy.domain.Product;
import com.cy.mapper.ProductMapper;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;SpringBootTest
public class MyBatisPlusTests {Autowiredprivate ProductMapper productMapper;Testpublic void test01() {Product product new Product();product.setName(小米手机);product.setPrice(2999.0);product.setFlag(1);product.setGoodsDesc(骁龙8 旗舰处理器 | 徕卡光学镜头 | 徕卡原生双画质 | 大师镜头包);productMapper.insert(product);}
}2.删除数据操作。 Test
public void test02() {int row productMapper.deleteById(1);System.out.println(row row);
}Test
public void test03() {ArrayListInteger ids new ArrayList(){{add(2);add(3);add(4);}};int row productMapper.deleteBatchIds(ids);System.out.println(row row);
}Test
public void test04() {MapString, Object columnMap new HashMap(){{put(name, 小米);put(price, 1999);}};int row productMapper.deleteByMap(columnMap);System.out.println(row row);
}Test
public void test05() {// 条件构造器UpdateWrapperProduct queryWrapper new UpdateWrapper();queryWrapper.gt(price, 2000).or().likeRight(name, 小米);int row productMapper.delete(queryWrapper);System.out.println(row row);
}3.修改数据操。
Test
public void test06() {Product product new Product();product.setId(3);product.setName(小米);product.setPrice(1999);int row productMapper.updateById(product);System.out.println(row row);
}Test
public void test07() {Product product new Product();product.setId(3);// 条件构造器UpdateWrapperProduct updateWrapper new UpdateWrapper();// set()设置更新SQL的SET片段ge()大于等于updateWrapper.set(name, 小米Pro).set(price, 3999).ge(goods_stock, 10);int row productMapper.update(product, updateWrapper);System.out.println(row row);
}现在你知道在SpringBoot中怎么整合Mybatis-Plus了吗如果你还有其他问题可以在评论区留言哦。