经过学习,推荐一个网址,MyBatis-Plus 讲的非常详细
mybatis_plus常见问题解决方法
-
insert与insertAllColumn方法的区别
1.insert方法默认会判断添加属性是否为空,若为空将不添加这个字段(类似于<if test=""></if>)
2.insertAllColumn方法不会判断,全字段插入,数据库也为null
总结:两个执行结果相似,但sql不同
-
实体和表名不一致
@TableName(value = "tbl_module")类上设置
注意:value=表名
-
设置主键策略
@TableId(value = "m_id",type = IdType.AUTO)主属性上设置
注意:value=字段名,type=主键策略
-
实体属性和表字段不一致和表字段中不存在某属性
@TableField(value = "m_name")属性上设置
@TableField(exist = false)属性上设置(设置为false添加不存在这个字段)
-
updateById和updateAllColumnById
1.updateById方法默认会判断添加属性是否为空
2.updateAllColumnById方法不会判断,全字段修改,数据库也为null
-
selectById、selectOne、selectBatchIds、selectByMap
1)selectById
@Test
public void selectById(){
TblModule tblModule = moduleMapper.selectById(1001);
System.out.println(tblModule);
}
注意:id一定要在实体上面自定主键,否则查询不到
2)selectOne
@Test
public void selectOne(){
TblModule tblModule = new TblModule();
tblModule.setmId(1003);
tblModule.setmName("上传房屋信息管理");
QueryWrapper<TblModule> tblModuleWrapper = new QueryWrapper<>();
tblModuleWrapper.setEntity(tblModule);
TblModule tblModule1 = moduleMapper.selectOne(tblModuleWrapper);
System.out.println(tblModule1);
}
3)selectBatchIds
@Test
public void selectBatchIds(){
List<Integer> list = new ArrayList<>();
list.add(1001);
list.add(1002);
list.add(1004);
List<TblModule> tblModules = moduleMapper.selectBatchIds(list);
for (TblModule tblModule : tblModules) {
System.out.println(tblModule);
}
}
4)selectByMap
@Test
public void selectByMap(){
Map<String,Object> map = new HashMap<>();
//map.put("字段名","value");
map.put("m_name","房屋签订管理");
List<TblModule> tblModules = moduleMapper.selectByMap(map);
for (TblModule tblModule : tblModules) {
System.out.println(tblModule);
}
}
注意:map中的kay是表中的字段名,而非实体属性