Mybatis-Plus的学习与CRUD案例

理解Mybatis-Plus

描述

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

实现的愿景

我们的愿景是成为 MyBatis 最好的搭档,就像 魂斗罗 中的 1P、2P,基友搭配,效率翻倍。

特征

1、无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑
2、强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求。
3、支持 Lambda 形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错

快速入手

创建数据库

首先需要在mysql(我使用的数据库)中创建一个数据库和数据表
创建数据库sql如下:

CREATE DATABASE   数据库名称

创建数据表sql如下:

CREATE TABLE `product` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `productName` varchar(50) NOT NULL,
  `price` double NOT NULL,
  `weight` int(11) NOT NULL,
  PRIMARY KEY (`id`)
)
INSERT INTO product (id, product_name, price,weight) VALUES (1, '华为p20',2300,24);
INSERT INTO product (id, product_name, price,weight) VALUES (2, '华为p30', 3600,32);
INSERT INTO product (id, product_name, price,weight) VALUES (3, '华为mate20',4600,50);
INSERT INTO product (id, product_name, price,weight) VALUES (4, '华为mate30',5600,60);
INSERT INTO product (id, product_name, price,weight) VALUES (5, '华为p20 pro',3000,36);
INSERT INTO product (id, product_name, price,weight) VALUES (6, '华为p30 pro',4000,40);
创建Maven项目

如果不了解maven的使用可以去我的主页查看关于maven的教程,这里不再做解释。这里使用SpringBpoot方式,我们使用STS创建一个Maven工程,主要修改pom.xml文件:

<!-- Spring Boot 启动父依赖 -->
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.0.4.RELEASE</version>
	</parent>
	<!-- 项目全局属性 -->
	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java.version>1.8</java.version>
		<mybatis-spring-boot>1.2.0</mybatis-spring-boot>
		<mysql-connector>5.1.39</mysql-connector>
	</properties>
	<dependencies>

		<!-- Spring Boot Web 依赖 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<!--配置mybatis-plus依赖-->
        <dependency>
			<groupId>com.baomidou</groupId>
			<artifactId>mybatis-plus-boot-starter</artifactId>
			<version>3.1.1</version>
		</dependency>
		<!-- Spring Boot Test 依赖 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
		<!-- 配置lombox依赖 -->
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<optional>true</optional>
			<version>1.16.12</version>
		</dependency>

		<!-- Spring Boot devtools 热部署 依赖 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
		</dependency>
		
		<!-- MySQL 连接驱动依赖 -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>${mysql-connector}</version>
		</dependency>
		

		<!-- Junit单元测试类 -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.12</version>
		</dependency>
	</dependencies>
配置数据源

在src/main/resources文件夹下添加application.properties属性文件,文件内容如下:

spring.datasource.url=jdbc:mysql://localhost:3306/数据库的名字?useUnicode=true&characterEncoding=utf8
spring.datasource.username=用户名
spring.datasource.password=密码
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
编写主程序入口

备注:MapperScan(写自己的路径")

@SpringBootApplication
@MapperScan("com.zhaosong.dao")
public class Application {
	public static void main(String[] args) {
		SpringApplication.run(Application.class, args);
	}
}
编写实体类
@Data//在编译的时候会自动生产get,set,toString等方法
@AllArgsConstructor//生产有参方法
@NoArgsConstructor//生产无参方法
public class Product {
	//主键
	@TableId(type =IdType.AUTO)
	private Integer id;
	//产品名称
	private String productName;
	//产品售价
	private Double price;
	//产品权重
	private Integer weight;
}
编写dao接口
public interface ProductDao extends BaseMapper<Product> {
}

编写单元测试类
@RunWith(SpringRunner.class)
@SpringBootTest
public class ProductTest {
	@Resource
	private ProductDao productDao;

	@Test
	public void getProduct() {
		List<Product> pr = productDao.selectList(null);
		pr.forEach(w -> {
			System.out.println(w);
		});
	}
}

到这里一个简单的查询就完成了。下面实现一个根据姓名模糊查询的单元测试类

@Test
	public void getProductName() {
		QueryWrapper<Product> qw=new QueryWrapper<Product>();
		qw.like("product_name", "%pro%");
		List<Product> pr = productDao.selectList(qw);
		pr.forEach(System.out::println);
	}
编写添加操作的单元测试类
@RunWith(SpringRunner.class)
@SpringBootTest
public class ProductTest {
	@Resource
	private ProductDao productDao;
	@Test
	public void addProduct() {
		Product pr=new Product(7,"华为X",13000.0,100);
		int count = productDao.insert(pr);
		System.out.println("添加的条数"+count);
	}
}
编写修改操作的单元测试类
//实现根据id单个修改
	@Test
	public void updateProduct() {
		Product pr=new Product(7,"华为Xs",13000.0,100);
		int count = productDao.updateById(pr);
		System.out.println("添加的条数"+count);
	}

编写删除操作的单元测试类
@Test
	public void delProductId() {
		int count = productDao.deleteById(7);
		System.out.println("添加的条数"+count);
	}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值