springboot整合mybatis-plus,及结果集null值、空值判断

1、添加jar包

<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>com.baomidou</groupId>
			<artifactId>mybatis-plus-boot-starter</artifactId>
			<version>3.4.1</version>
		</dependency>

2、yml文件配置

#配置tomcat服务器相关信息
server:
  port: 8090
  servlet:
    #项目发布路径 一般都是默认值/
    context-path: /

spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/jtdb?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true
    username: root
    password: root

#添加mybatis相关配置信息
mybatis:
  #只要定义了别名包 之后的映射类型可以自动的完成拼接.
  type-aliases-package: com.jt.demo.pojo
  mapper-locations: classpath:/mybatis/mappers/*.xml
  #开启驼峰映射
  configuration:
    map-underscore-to-camel-case: true


mybatis-plus:
//xml映射文件路径
  mapper-locations: classpath*:**/mapper/xml/**/*.xml
  //定义别名包 映射类型完成自动拼接
  type-aliases-package: com.jd.demo.pojo
  configuration:
    #驼峰下划线转换
    map-underscore-to-camel-case: true

在这里插入图片描述

3、pojo,mapper,service配置

//pojo
@Data
@EqualsAndHashCode(callSuper=true)
@Accessors(chain = true)
@TableName("t_secret")
//model封装了CRUD
public class Secret extends Model<Secret>{
	private static final long serialVersionUID = 1L;
	@TableId(value="id",type=IdType.ASSIGN_UUID)
	private String id; // id
	}
//mapper层 继承basenapper  记得加泛型  封装了CRUD
//@MapperScan("com.xx.mapper")启动类加上此注解,就不用写下面注解
@Mapper//此注解告知该接口的实现类由框架实现,并交给spring管理
public interface SecretMapper extends BaseMapper<Secret>{

}
//service层 继承IService 封装了CRUD
public interface SecretService extends IService<Secret>{

}

//service层实现类
@Service
@Transactional
public class SecretServiceImpl extends ServiceImpl<SecretMapper, Secret> implements SecretService {
	@Autowired
	private SecretMapper secretMapper;
}
  

这样就可以在service使用mapper的crud功能,在controller使用service层的CRUD功能。service的封装在basemapper上更进一步进行封装,功能都差不多,只是多了一个批量使用功能。

注意:在使用ybatis-plus查询的时候对null值和空值的判断
例:1、当表中没有数据的时候

List<Users> selectList = usersMapper.selectList(null);
System.out.println(selectList==null);
		System.out.println(selectList.isEmpty());
		for(Users users:selectList) {
			System.out.println("111111111111111111111");
		}
		for (int i = 0; i < selectList.size(); i++) {
			System.out.println(i);
		}

在这里插入图片描述
可以看出结果不为null,但是为空,不会进入遍历

2、当表中有数据的时候

List<Users> selectList = usersMapper.selectList(null);
		System.out.println(selectList==null);
		System.out.println(selectList.isEmpty());
		for(Users users:selectList) {
		System.out.println(users==null);
			System.out.println("111111111111111111111");
			System.out.println("------"+users);
		}
		for (int i = 0; i < selectList.size(); i++) {
			System.out.println(i);
		}
		}

在这里插入图片描述

当表中有值的时候,查询表中全部数据的的时候,查询出的结果不会 为null和空(因为表中有值),进入遍历,遍历后的对象也不会为null和空(因为表中主键不为null)。

3、当表中有数据,查询某个字段,但这个字段可能为空或者null

QueryWrapper<Users> queryWrapper=new QueryWrapper<>();
		queryWrapper.select("password");
		List<Users> selectList = usersMapper.selectList(queryWrapper);
		System.out.println(selectList==null);
		System.out.println(selectList.isEmpty());
		System.out.println("=========================================");
		for(Users users:selectList) {
			System.out.println(users==null);
			System.out.println("111111111111111111111");
			System.out.println("------"+users);
		}
		for (int i = 0; i < selectList.size(); i++) {
			System.out.println(i);
		}
		}

在这里插入图片描述
当表中有值的时候,查询表中部分字段的时候,查询出的结果不会 为null和空(因为表中有值),进入遍历,遍历后的对象有可能为null值或者空值(因为查询字段为null的时候,对象就会为null),因为查询的这个字段为空或者null时候,需要对遍历后的对象进行判断。

总之:查询多个返回值为list集合,集合不会为null,但有可能为空,集合中的对象也有可能为null或者空

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用中提到了使用mybatis-plus的insert方法遇到的问题及解决方法,具体是关于添加时id不存在异常的处理。引用则介绍了使用mybatis-plus的LambdaQueryWrapper进行条件查询的方法,包括对判断和多条件查询的示例。引用中给出了按条件查询的两种方式,一种需要手动写属性名容易出错,另一种提高了安全性保证不会写错属性名。综合这些引用内容,我们可以得出以下答案: 在mybatis-plus中,处理非条件查询可以使用LambdaQueryWrapper进行链式编程。对于非判断,可以使用`null!=xxx`或`xxx!=null`的方式来判断条件是否为。例如,在查询时,我们可以使用`qw.like(null!=book.getName(),Book::getId,10)`来判断name属性不为并且id小于10的条件。另外,还可以通过`qw.lt(Book::getId,10).or().gt(Book::getId,50)`来实现小于10或者大于50的条件查询。 在使用LambdaQueryWrapper进行多条件查询时,可以通过连续调用`qw.lt()`、`qw.gt()`等方法来设置多个查询条件。例如,`qw.lt(Book::getId,10).gt(Book::getId,5)`表示查询id小于10且大于5的条件。同时,也可以使用`or()`方法来设置或者关系的查询条件。 总结来说,mybatis-plus提供了LambdaQueryWrapper进行条件查询的灵活性和便捷性,可以根据具体需求进行非判断和多条件查询。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [使用mybatis-plus的insert方法遇到的问题及解决方法(添加时id不存在异常)](https://download.csdn.net/download/weixin_38514660/12821049)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [SpringBoot使用Mybatis-Plus 按条件查询 判断](https://blog.csdn.net/qq_45007567/article/details/125942681)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值