这里是详细的 SpringBoot Mybatis 批量插入 Oracle 数据库数据的攻略:
一、前置条件
在开始之前,需要确认以下前置条件的设置:
-
已经安装了 JDK 和 Maven。
-
已经安装了 Oracle 数据库,并且成功连接测试通过。
-
已经创建了对应的数据表,并且设置了正确的表结构和约束。
二、添加依赖
在项目的 pom.xml 文件中添加以下依赖:
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.4</version>
</dependency>
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc8</artifactId>
<version>19.9.0.0</version>
</dependency>
三、配置数据库连接
在项目的 application.properties 或 application.yml 文件中,添加 Oracle 数据库的连接配置:
spring.datasource.url=jdbc:oracle:thin:@localhost:1521:ORCL
spring.datasource.username=用户名
spring.datasource.password=密码
spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
其中,url 中的 localhost 和 1521 分别表示数据库的主机名和端口号,ORCL 表示数据库的 SID。
四、配置 Mybatis
在项目中,创建一个包名为 mapper 的文件夹,用于存放 Mybatis 的 Mapper 接口和 XML 配置文件。
1. 编写 Mapper 接口
创建一个名为 UserMapper 的 Java 接口,用于定义批量插入数据的方法:
@Repository
public interface UserMapper {
void batchInsert(@Param("list") List<User> userList);
}
在接口的参数列表中,使用 @Param 注解指定传入的参数名称。
2. 配置 XML 文件
在 mapper 包下,创建一个名为 userMapper.xml 的文件,编写以下代码:
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.demo.mapper.UserMapper">
<insert id="batchInsert">
INSERT INTO USER (id, name, age) VALUES
<foreach collection="list" item="item" index="index" separator=",">
(#{item.id}, #{item.name}, #{item.age})
</foreach>
</insert>
</mapper>
其中,insert 标签的 id 属性与 Mapper 接口中的方法名称一致,使用 foreach 标签遍历传入的 List 集合,添加数据到 SQL 语句中。
五、编写代码
1. 实体类
创建一个名为 User 的实体类,用于存储需要插入的数据:
public class User {
private Integer id;
private String name;
private Integer age;
public User() {}
public User(Integer id, String name, Integer age) {
this.id = id;
this.name = name;
this.age = age;
}
// getter 和 setter
}
2. Service 层
编写 Service 层的代码,调用 Mapper 接口定义的批量插入方法:
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public void batchInsert(List<User> userList) {
userMapper.batchInsert(userList);
}
}
3. Controller 层
编写 Controller 层的代码,调用 Service 层的批量插入方法:
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@PostMapping("/batchInsert")
public String batchInsert() {
List<User> userList = new ArrayList<>();
userList.add(new User(1, "Tom", 20));
userList.add(new User(2, "Jerry", 22));
userList.add(new User(3, "Mike", 24));
userService.batchInsert(userList);
return "success";
}
}
六、测试结果
执行 UserController 中的 batchInsert 方法,发送 POST 请求,可以将用户数据批量插入到 Oracle 数据库中。使用 SQL Developer 工具查询数据库,可以看到成功插入了三条数据。
select * from USER;
ID | NAME | AGE |
---|---|---|
1 | Tom | 20 |
2 | Jerry | 22 |
3 | Mike | 24 |
七、示例代码
以下是完整的示例代码,供参考和学习:
1. User.java
public class User {
private Integer id;
private String name;
private Integer age;
public User() {}
public User(Integer id, String name, Integer age) {
this.id = id;
this.name = name;
this.age = age;
}
// getter 和 setter
}
2. UserMapper.java
@Repository
public interface UserMapper {
void batchInsert(@Param("list") List<User> userList);
}
3. userMapper.xml
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.demo.mapper.UserMapper">
<insert id="batchInsert">
INSERT INTO USER (id, name, age) VALUES
<foreach collection="list" item="item" index="index" separator=",">
(#{item.id}, #{item.name}, #{item.age})
</foreach>
</insert>
</mapper>
4. UserService.java
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public void batchInsert(List<User> userList) {
userMapper.batchInsert(userList);
}
}
5. UserController.java
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@PostMapping("/batchInsert")
public String batchInsert() {
List<User> userList = new ArrayList<>();
userList.add(new User(1, "Tom", 20));
userList.add(new User(2, "Jerry", 22));
userList.add(new User(3, "Mike", 24));
userService.batchInsert(userList);
return "success";
}
}
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot Mybatis批量插入Oracle数据库数据 - Python技术站