springboot开发笔记
作者:互联网
1.问题描述:使用mybatisplus时,由于mybatisplus本身为我们配置好了许多东西,也不需要写xml文件,所以我一开始不懂它会映射哪张数据表,经查阅资料
解决办法为在类上方添加@TableName(“my_user_table”)
使用mybatisPlus时,会确定实体类和数据的映射关系
具体的映射方法有两种:
①默认:采用驼峰映射规则,例如MyUserTable 对应的数据库表为 my_user_table ; TEMyUserTable 对应表名为t_e_my_user_table;
②注解@TableName 在类名上方添加@TableName("my_user_table")
2.left
join
中关于
where
和
on
条件的几个知识点:
1.多表
left
join
是会生成一张临时表,并返回给用户
2.
where
条件是针对最后生成的这张临时表进行过滤,过滤掉不符合
where
条件的记录,是真正的不符合就过滤掉。
3.
on
条件是对
left
join
的右表进行条件过滤,但依然返回左表的所有行,右表中没有的补为
NULL
4.
on
条件中如果有对左表的限制条件,无论条件真假,依然返回左表的所有行,但是会影响右表的匹配值。也就是说
on
中左表的限制条件只影响右表的匹配内容,不影响返回行数。
结论:
1.
where
条件中对左表限制,不能放到
on
后面
2.
where
条件中对右表限制,放到
on
后面,会有数据行数差异,比原来行数要多
3.问题描述:使用mybatisplus时,当实体类中的属性不全是数据表中的字段时,若不进行处理就会报错
@TableName:数据库表相关
@TableId:表主键标识
@TableField:表字段标识
@TableLogic:表字段逻辑处理注解(逻辑删除)
解决办法:在实体类的属性上面加上@TableField(exist = false)注解后,此字段就不会映射数据库了。
4.~~~~业务逻辑不写在controller层的原因
1.Controller——控制器,主要负责业务的调度,而业务主要放在service中来实现
2.代码都写在controller会看起来很乱!易读性差!
3.也是最重要的一条!applicationContext-db.xml中配置的事务配置的事务不会生效!
5.java有几种对象(PO,VO,DAO,BO,POJO)
一、PO:persistant object 持久对象,可以看成是与数据库中的表相映射的java对象。使用Hibernate来生成PO是不错的选择。
二、VO:value object值对象。通常用于业务层之间的数据传递,和PO一样也是仅仅包含数据而已。但应是抽象出的业务对象,可以和表对应,也可以不,这根据业务的需要.
PO只能用在数据层,VO用在商业逻辑层和表示层。各层操作属于该层自己的数据对象,这样就可以降低各层之间的耦合,便于以后系统的维护和扩展。
好处:这样可以减少大量的工作量(也就意味着减少bug,减少风险),也不需要担心未来的维护工作!
参考文章:https://blog.csdn.net/jikefzz1095377498/article/details/79237618
6.配置nacos
新版本的nacos默认是以cluster方式启动
解决办法:修改startup.cmd,修改mode值为standalone
set MODE="standalone"
nacos配置mysql数据源启动出现No DataSource set的问题
官网上的是这样的db.url.0=jdbc:mysql://localhost:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true,这个应该是没更新,在后面加一个参数就行了db.url.0=jdbc:mysql://localhost:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&serverTimezone=UTC
问题解决
参考文章:https://blog.csdn.net/qq_41017324/article/details/117340029
标签:springboot,映射,nacos,笔记,开发,条件,左表,where,PO 来源: https://www.cnblogs.com/liweicheng6066/p/16574804.html