这两天做项目,用到了BeanUtils.copyProperties()这个方法,而在两个不同的类中使用到这个方法,但不知怎么的,就是有一个对象服务发copy另外个对象,最后排查终于找到原因。 因为两个类引入了两个不同的BeanUtils类,
一个为org.springframework.beans.BeanUtils,
另一个是org.apache.commons.beanutils.BeanUtils,
这两个类在不同的包下面,而这两个类的copyProperties()方法里面传递的参数赋值是相反的。
例如: a,b为对象 BeanUtils.copyProperties(a, b); BeanUtils是org.springframework.beans.BeanUtils, a拷贝到b BeanUtils是org.apache.commons.beanutils.BeanUtils,b拷贝到a 我一般用spring的
Mybatis Plus删除
@RunWith(SpringRunner.class) @SpringBootTest public class DeleteTest { @Autowired private UserInfoMapper userInfoMapper;
/**
* 根据id删除
*/
@Test
public void deleteById() {
int rows = userInfoMapper.deleteById(123455);
System.out.println("影响记录数:"+rows);
}
/**
* 根据条件删除
*/
@Test
public void deleteBy() {
Map<String,Object> coumnMap = new HashMap<>();
coumnMap.put("username","肖娟");
coumnMap.put("age",22);
int rows = userInfoMapper.deleteByMap(coumnMap);
System.out.println("影响记录数:"+rows);
}
/**
* 批量删除
*/
@Test
public void deleteBatchIds() {
int rows = userInfoMapper.deleteBatchIds(Arrays.asList(123,335,54656));
System.out.println("影响记录数:"+rows);
}
/**
* 根据条件删除,使用lambda
*/
@Test
public void deleteByWrapper() {
LambdaUpdateWrapper<UserInfo> lambdaUpdateWrapper = Wrappers.<UserInfo> lambdaUpdate();
lambdaUpdateWrapper.eq(UserInfo::getUsername,"肖姐").eq(UserInfo::getAge,30).set(UserInfo::getAge,11);
int rows = userInfoMapper.delete(lambdaUpdateWrapper);
System.out.println("影响记录数:"+rows);
}
}
Arrays.asList(ids.split(","));
MyBatis一次执行多条SQL语句
有个常见的场景:删除用户的时候需要先删除用户的外键关联数据,否则会触发规则报错。
解决办法不外乎有三个:1、多条sql分批执行;2、存储过程或函数调用;3、sql批量执行。
今天我要说的是MyBatis中如何一次执行多条语句(使用mysql数据库)。
1、修改数据库连接参数加上allowMultiQueries=true,如:
hikariConfig.security.jdbcUrl=jdbc:mysql://xx.xx.xx:3306/xxxxx?characterEncoding=utf-8&autoReconnect=true&failOverReadOnly=false&allowMultiQueries=true
2、直接写多条语句,用“;”隔开即可
delete from sec_user_role where userId=#{id}; delete from sec_user where id=#{id};js中字符串转数字的方法
1.当字符串中是纯数字
例如:var s = '234';
/********** 字符串在运算操作中会被当做数字类型来处理 ***************/
s *= 1;
/******* string的两个转换函数,只对string有效 ********/
parseInt(s); // 234
parseFloat(s); //234
/************ 强制类型转换 *********************/
Number(s); // 234
2.当字符串是数字加字母等非数字
例如: var s = '234string';
parseInt(s); //234
parseFloat(s); //234.0