为了账号安全,请及时绑定邮箱和手机立即绑定

MyBatis-Plus入门

难度高级
时长 4小时 0分
学习人数
综合评分9.57
101人评价 查看评价
9.7 内容实用
9.4 简洁易懂
9.6 逻辑清晰

讲师回答 / 老猿
MP自带的CRUD操作是针对单表操作的,如果要操作多表,可以写自定义sql。给你举个使用条件构造器的多表sql例子,可以写在xml中或注解中,下面的是用xml的写法:<...code...>对应的Mapper接口中...

讲师回答 / 老猿
我怀疑这应该是MP默认主键策略的问题,你没配置策略,他的默认策略是雪花算法,用雪花算法生成主键了。而你主键类型为Integer,最大21亿左右,超范围了,所以报错。后来你配置了策略为AUTO,就是数据库自增,MP就不给你设置主键了,所以正常。

已采纳回答 / YoYo_MM
其实总体来说用yml更优雅,更简洁。你可以很方便的看出属性的父子关系,不像properties里面全都是代码,感觉很乱。一般springboot支持的都可以用yml。

已采纳回答 / 老猿
应该可以使用原生的mybatis的方式和条件构造器混合使用,但要确保没有sql注入风险才可以,例如:<...code...>

讲师回答 / 老猿
可以采取楼上的用法,例如:Wrappers.<User>query().select("distinct name,age,sex");

已采纳回答 / 老猿
这个就是个参数名,随便起的名字,建议你看看lambda表达式,你就能理解了。

已采纳回答 / 老猿
1、insql这种使用sql注入风险,但是你可以自己防止sql注入,例如保证拼接进来的参数,是后端逻辑计算出来的,并且不存在风险的,不是前端传的,如果是前端传的,不建议用这种方式拼接。2、“王姓”的那个我应该用的是likeRight吧,这个不存在注入风险,你看看打印出来的sql语句就明白了。

讲师回答 / 老猿
感觉即使用了AR模式,想要使用自定义SQL。还得使用mapper接口的调用方式实现。

已采纳回答 / 老猿
这个我认为不是bug,你的说那个短路与实现的效果,那是基于java语法层面的,mp基于应用层面,实现不了你说的这种需求。lambdaQueryWrapper.eq(StringUtil.isNotEmpty(xxx),Dto::getXX,new BigDecimal(xxx));这个方法,会根据第一个条件是否为true来判断,这句是否加入到sql中,但不能做短路处理。

讲师回答 / 老猿
你的createTime是什么类型的,还有是使用的lombok插件,还是自己写的get,set方法,也可能是没有get,set方法导致的。

讲师回答 / 老猿
是的,要用基本数据类型的包装类,不能用基本数据类型,基本数据类型作为实例变量,默认值是0、

讲师回答 / 老猿
我感觉也是你的配置不正确导致的,请检查一下你的配置,或者把你的配置贴出来我看看。

讲师回答 / 老猿
主要看场景和习惯,例如你就是一个根据名字查询,name like "%XXX%",或者根据两三个条件查询,就不用再写sql语句了,不用再在Mapper接口中定义方法,定义参数等等,挺方便的,多条件的复杂sql也可以用mp的方式写出来,但是你要做个判断,是用原生写简单还是mp简单。我的原则就是哪个简单哪个快就用哪个写法写,我mp用熟悉了之后,是在减少工作量,而不是增加工作量。
课程须知
1、有Java开发基础,了解Lambda表达式; 2、至少会使用一种关系型数据库; 3、熟悉Maven; 4、熟悉SpringBoot; 5、最好熟悉MyBatis。
老师告诉你能学到什么?
1、了解MP的基本原理及框架特点; 2、掌握MP通用Mapper的使用; 3、掌握MP常用注解的使用; 4、掌握ActiveRecord模式的使用; 5、掌握MP多种主键策略的使用; 6、掌握MP常用配置的使用; 7、掌握MP通用Service的使用; 8、掌握MP在某些应用场景下的具体使用方式。

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消