springboot项目中关联插入除了jpa还有那些方式,请列举出来,并用java代码和注解展示
时间: 2024-03-28 14:41:55 浏览: 69
除了 JPA 之外,Spring Boot 项目中还可以使用 MyBatis 或者 JDBC 进行关联插入操作。以下是使用 MyBatis 和 JDBC 进行关联插入的示例代码:
使用 MyBatis 进行关联插入:
1. 创建实体类
```java
public class User {
private Long id;
private String name;
private Role role;
// getter 和 setter 略
}
public class Role {
private Long id;
private String name;
// getter 和 setter 略
}
```
2. 创建 MyBatis Mapper 接口
```java
@Mapper
public interface UserMapper {
@Insert("INSERT INTO user(name, role_id) VALUES (#{name}, #{role.id})")
@Options(useGeneratedKeys = true, keyProperty = "id")
int insert(User user);
}
```
3. 在 Spring Boot 中配置 MyBatis
```java
@Configuration
@MapperScan("com.example.mapper")
public class MyBatisConfig {
@Bean
public SqlSessionFactory sqlSessionFactory() throws Exception {
SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
sessionFactory.setDataSource(dataSource());
return sessionFactory.getObject();
}
@Bean
public DataSource dataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/test");
dataSource.setUsername("root");
dataSource.setPassword("root");
return dataSource;
}
}
```
4. 在 Service 中调用 Mapper 接口
```java
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public int insert(User user) {
return userMapper.insert(user);
}
}
```
使用 JDBC 进行关联插入:
1. 创建实体类和数据库表结构同上。
2. 在 Service 中使用 JDBC 进行关联插入操作
```java
@Service
public class UserService {
@Autowired
private JdbcTemplate jdbcTemplate;
public int insert(User user) {
String sql = "INSERT INTO user(name, role_id) VALUES (?, ?)";
Object[] params = {user.getName(), user.getRole().getId()};
return jdbcTemplate.update(sql, params);
}
}
```
需要在 Spring Boot 中配置数据源和 JdbcTemplate,可以参考 MyBatis 配置中的 `MyBatisConfig` 类。
阅读全文