Mybatis动态SQL(批量添加删除多表查询(⼀对多多对⼀))Mybatis动态SQL(批量添加/删除/多表查询(⼀对多/多对⼀))
项⽬准备
我们先导⼊所需要的sql⽂件
数据库中有三张表 分别是 product employee department
department
CREATE TABLE `department` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`name` varchar(30) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
employee
CREATE TABLE `employee` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`name` varchar(30) DEFAULT NULL,
`dept_id` bigint(20) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `dept_id` (`dept_id`),
CONSTRAINT `employee_ibfk_1` FOREIGN KEY (`dept_id`) REFERENCES `department` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;
product
CREATE TABLE `product` (
`id` bigint(11) NOT NULL AUTO_INCREMENT,
`name` varchar(30) DEFAULT NULL,
`price` decimal(10,2) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8;
打开IDEA
我们先创建⼀个maven项⽬
点击next后 直接点击finish
我们先来看⼀下总体的结构
我们先来配置⼀下**l(**需要使⽤的jar包) 这⾥我⽤的是jdk1.8 版本不同的童鞋们可以修改⼀下局部配置(如果你配置了全局配置可以忽略这⾥)
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="/POM/4.0.0"
xsi="/2001/XMLSchema-instance"
schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId&</groupId>免费ppt模板下载可爱
<artifactId>mybatis-day02</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<!-- mybatis核⼼包 -->
<dependency>
<groupId&batis</groupId>
<artifactId>mybatis</artifactId>
<version>3.2.1</version>
</dependency>
<!-- mysql驱动包 -->
<dependency>
<groupId>mysql</groupId>mysql语句多表查询
<artifactId>mysql-connector-java</artifactId>
<version>5.1.26</version>
</dependency>
<!-- junit测试包 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
<!-- 局部jdk 1.8配置,l中 -->
网站模板哪个好<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>
</project>
配置⽂件准备
数据库连接⽂件 jdbc.properties
jdbc.username=你的数据库⽤户名
jdbc.password=你的数据库密码
jdbc.url=jdbc:mysql://你数据库的IP地址(localhost)/使⽤的数据库名
jdbc.sql.jdbc.Driver
核⼼配置⽂件 l
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-////DTD Config 3.0//EN"
"/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 加载jdbc.properties-->
<properties resource="jdbc.properties"/>
<!--申明操作数据库的环境-->
<environments default="MYSQL">childlife
<environment id="MYSQL">
<!--使⽤jdbc的事务-->
<transactionManager type="JDBC"/>
<!--⽀持连接池-->
<dataSource type="POOLED">
<!--⾃动补全结构:ctrl+shift+回车-->
<property name="username"value="${jdbc.username}"/>
<property name="password"value="${jdbc.password}"/>
<property name="url"value="${jdbc.url}"/>
<property name="driver"value="${jdbc.driverClassName}"/>
</dataSource>
</environment>
</environments>
<mappers>
<!-- 加载l⽂件-->
</mappers>
</configuration>
创建模型(编写domain层)
Department 部门表
domain;
import java.util.ArrayList;
import java.util.List;
/**
* @Author Richard
* @Description //TODO $
* @Date 2020/11/25 14:37
*/
access数据库作品public class Department {
/**部门id*/
private Long id;
/**部门名称*/
private String name;
/**部门员⼯*/
private List<Employee> employees =new ArrayList<>();
}
Employee 员⼯表
domain;
/**
* @Author Richard
* @Description //TODO $jsoup githup
* @Date 2020/11/25 14:35
*/
public class Employee {
/**员⼯ID*/
private Long id;
/**员⼯姓名*/
private String name;
/**员⼯的部门ID (部门对象)*/
private Department dept;
}
Product 产品表
domain;
import java.math.BigDecimal;
/**
* 产品类,⽤于存放产品数据
* @author Richard
* @date 2020/11/25 14:06
*/
public class Product {
/**产品ID*/
private Long id;
/**产品名字*/
private String name;
/**产品价格*/
private BigDecimal price;
}
我们给每个类⽣成get和set⽅法 ⽣成toString⽅法持久层(Mapper)
在批量操作,我们最先使⽤到的是product表
所以我们先创建⼀个接⼝ ProductMapper
所以我们先创建⼀个接⼝ ProductMapper
apper;
domain.Product;
import java.util.List;
/**
* @author Richard
*/
public interface ProductMapper {
/**
* 查询全部⽅法
* @return 返回值为Product的集合
*/
List<Product>findAll();
/
**
* 批量插⼊⽅法
* @param products 传⼊product的list
*/
void batchProduct(List<Product> products);
/**
* 批量删除⽅法
* @param ids 传⼊id的list
*/
void batchDeleteProductById(List<Long> ids);
}
在resource资源⽂件夹下⾯创建l
知识点会出现在注释中
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-////DTD Mapper 3.0//EN"
"/dtd/mybatis-3-mapper.dtd">
<!--注:namespace的内容就是ProductMapper接⼝的全限定名-->
<mapper namespace="cn.xxxx.mapper.ProductMapper">
<!--id的值保证ProductMapper接⼝的⽅法名⼀值-->
<select id="findAll"resultType="cn.xxxx.domain.Product">
SELECT * FROM product
</select>
<!--批量添加-->
<insert id="batchProduct">
INSERT INTO product (name,price) VALUES
<!--
在mybatis中,咱们可以传集合与数组过来,mybatis会把它变成Map
如果传的是集合,对应的key就是list
如果传的是数组,对应的key就是array
执⾏批量添加功能
1.parameterType中接收的是集合类型(也可以写全限定名:java.util.List)
3.separator="," 每遍历⼀次后的分隔符
4.item="p" 每次遍历的这个对象别名,可以修改
-->
<foreach collection="list"item="p"separator=",">
<!--
p.name product对象的名字
p.price product对象的价格
-->
(#{p.name},#{p.price})
</foreach>
</insert>
<!--批量删除-->
<delete id="batchDeleteProductById">
DELETE FROM product WHERE id IN
<!--
1.open 拼接sql以什么开始
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论