mybatis-plus添加数据前先查询
时间: 2023-08-13 15:14:40 浏览: 260
可以使用Mybatis-Plus提供的`selectCount`方法来判断是否已经存在该记录,如果存在则不进行插入操作。具体代码如下:
```java
int count = userDao.selectCount(new QueryWrapper<User>().eq("name", user.getName()));
if (count == 0) {
userDao.insert(user);
}
```
其中,`userDao`为Mybatis-Plus自动生成的Mapper接口,`new QueryWrapper<User>().eq("name", user.getName())`表示查询条件,即根据`name`字段查询是否存在该记录。如果`count`等于0,则插入该记录。
相关问题
mybatis-plus添加数据
使用 MyBatis-Plus 添加数据的步骤如下:
1. 创建实体类:首先,需要创建一个与数据库表对应的实体类,并使用 `@TableName` 注解标注对应的数据库表名。确保实体类的属性与表结构一致。
```java
import com.baomidou.mybatisplus.annotation.TableName;
@TableName("your_table_name")
public class YourEntity {
// 定义实体类的属性
}
```
2. 创建 Mapper 接口:接下来,创建一个继承自 MyBatis-Plus 的 `BaseMapper` 接口的自定义 Mapper 接口,并定义一些需要的数据访问方法。
```java
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface YourMapper extends BaseMapper<YourEntity> {
// 定义数据访问方法
}
```
3. 配置 Mapper 扫描:在配置文件中配置 Mapper 扫描,告诉 MyBatis-Plus 哪些包下的 Mapper 接口需要被扫描。
```properties
# application.properties 或 application.yml
mybatis-plus.mapper-locations=classpath:mapper/**/*.xml
```
4. 编写 SQL 映射文件:在资源目录下创建与 Mapper 接口对应的 XML 文件,并编写 SQL 语句。
```xml
<!-- mapper/YourMapper.xml -->
<mapper namespace="com.example.YourMapper">
<insert id="insert" parameterType="com.example.YourEntity">
INSERT INTO your_table_name (column1, column2, ...)
VALUES (#{property1}, #{property2}, ...)
</insert>
</mapper>
```
5. 调用插入方法:在需要添加数据的地方,通过调用 Mapper 接口中的插入方法即可完成数据的添加。
```java
@Autowired
private YourMapper yourMapper;
public void insertData(YourEntity yourEntity) {
yourMapper.insert(yourEntity);
}
```
以上就是使用 MyBatis-Plus 添加数据的简单步骤。根据自己的实际情况进行相应的调整和配置。
springboot 整合 mybatis-plus 添加数据操作成功但数据库没有数据
如果你已经成功添加了数据但是数据库中没有数据,那么可能是你没有提交事务。
在 Spring Boot 中,如果你没有显式地开启事务,那么默认情况下是自动提交事务的,即每次操作完数据库后都会自动提交事务。但是如果你显式地开启了事务,那么就需要手动提交事务。
可以尝试在操作数据库后手动提交事务,例如:
```java
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Transactional
@Override
public void addUser(User user) {
userMapper.insert(user);
// 手动提交事务
TransactionAspectSupport.currentTransactionStatus().flush();
}
}
```
`@Transactional` 注解用于开启事务,`TransactionAspectSupport.currentTransactionStatus().flush()` 用于手动提交事务。
如果还是无法解决问题,可以检查一下数据源配置是否正确,以及 mapper 是否正确配置等等。
阅读全文