mybatis的LambdaQueryWrapper的eq中一个是string另一个是int能成功吗
时间: 2024-03-01 22:50:44 浏览: 9
在MyBatis-Plus中,LambdaQueryWrapper的eq方法中,一个参数为String类型,另一个参数为int类型是可以成功的。MyBatis-Plus会自动将int类型的参数转换为String类型进行比较。例如:
```
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(User::getName, "张三");
wrapper.eq(User::getAge, 18);
```
其中,getName方法返回的是String类型,getAge方法返回的是int类型,但是MyBatis-Plus会将18转换为字符串"18"进行比较,因此是可以成功的。
相关问题
LambdaQueryWrapper的eq中type是string类型,参数是int类型,能成功吗
在MyBatis-Plus中,LambdaQueryWrapper的eq方法中,参数类型必须和数据库字段类型一致,否则会出现类型转换错误。如果LambdaQueryWrapper的eq方法中type是String类型,但是传入的参数是int类型,那么会抛出类型转换错误的异常。
例如,假设有一个用户表user,其中age字段是int类型,如果我们使用LambdaQueryWrapper进行查询时,代码如下:
```
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.eq("age", 18, String.class);
```
上述代码中,我们指定了参数类型为String.class,但是实际传入的参数是int类型的18,因此会抛出类型转换错误的异常。
因此,在使用LambdaQueryWrapper时,需要确保参数类型和数据库字段类型一致,否则会导致查询失败。
写一个Mybatis-plus的增删改查
很高兴回答你的问题!
Mybatis-plus是基于Mybatis的增强工具,可以更加方便地进行数据库操作。以下是Mybatis-plus的增删改查示例代码:
1. 增加操作
```java
//实例化一个实体类
User user = new User();
user.setName("张三");
user.setAge(18);
user.setEmail("zhangsan@qq.com");
user.setCreateTime(new Date());
user.setUpdateTime(new Date());
//插入数据
int result = userMapper.insert(user);
System.out.println("插入结果:" + (result>0?"成功":"失败"));
```
2. 删除操作
```java
//根据主键(ID)删除
int result = userMapper.deleteById(1);
System.out.println("删除结果:" + (result>0?"成功":"失败"));
//根据指定字段删除,例如删除年龄为18的用户
Map<String, Object> map = new HashMap<>();
map.put("age", 18);
int result1 = userMapper.deleteByMap(map);
System.out.println("删除结果:" + (result1>0?"成功":"失败"));
```
3. 修改操作
```java
//根据主键(ID)修改
User user = userMapper.selectById(1);
user.setName("李四");
user.setUpdateTime(new Date());
int result = userMapper.updateById(user);
System.out.println("更新结果:" + (result>0?"成功":"失败"));
//更新指定字段,例如将年龄为18的用户更新为20岁
User user = new User();
user.setAge(20);
UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("age", 18);
int result1 = userMapper.update(user, updateWrapper);
System.out.println("更新结果:" + (result1>0?"成功":"失败"));
```
4. 查询操作
```java
//根据主键(ID)查询
User user = userMapper.selectById(1);
System.out.println(user);
//根据多个主键(ID)查询
List<Integer> ids = Arrays.asList(1,2,3);
List<User> users = userMapper.selectBatchIds(ids);
users.forEach(System.out::println);
//通过条件查询
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.ge("age", 20);
List<User> users1 = userMapper.selectList(queryWrapper);
users1.forEach(System.out::println);
```
希望这个示例可以帮助你了解Mybatis-plus的操作。