默认配置情况:
默认情况下,mybatis 的 update 操作返回值是记录的 matched 的条数,并不是影响的记录条数。
insert和delete是受影响的条数
int flag;
//root3 不存在 ;返回值是0
flag = deleteByUserName("root3");
//root2 存在; 返回值是1
flag = deleteByUserName("root2");
//若外键不能删;则删除抛异常
UserInfo userInfo = new UserInfo();
try {
//user_info 表中user_name是非空字段,插入抛异常
flag = insertUserDb(userInfo);
} catch (Exception e) {
e.printStackTrace();
}
userInfo.setUserName("root5");
userInfo.setPasswordHash("root5");
//插入成功 ;返回值是1
flag = insertUserDb(userInfo);
try {
//插入重复值,抛异常 DuplicateKeyException(违反主键,唯一键约束)
flag = insertUserDb(userInfo);
} catch (Exception e) {
e.printStackTrace();
}
//更新相同的值,返回值为1
flag = updateUserByUserName(userInfo);
//更新不同的值,返回值也会1
userInfo.setPasswordHash("root6");
flag = updateUserByUserName(userInfo);
增加url参数配置,返回值会变成受影响的行数
jdbc:mysql://${jdbc.host}/${jdbc.db}?useAffectedRows=true
//更新相同的值,返回值为0
flag = updateUserByUserName(userInfo);
//更新不同的值,返回值返回1
userInfo.setPasswordHash("root6");
flag = updateUserByUserName(userInfo);