小说项目总结

小说项目总结

最近的一个多月的时间里,一直都在做一个小说网站,通过这次项目,遇到了很多问题,但自从自己阳了之后,几乎一直在医院输水,导致本该我写的部分都交给了我们组的另外两名后端,自己写的部分代码都没有进行交互,从上周开始,进行项目的完善,自己也从医院里出来了,在完善的过程中遇到了很多的问题,也收获了很多。
昨天在写项目时,遇到了一个很奇怪的问题,tomcat启动不起来,日志报错显示的是bean装配失败,但把代码看了好久,该有的注解等等也都有,但就是一直报错。

在这里插入图片描述
之后我重新拉了一份项目,把代码克隆到新的项目里面,tomcat启动成功,但令我百思不得其解的是为什么在原来的项目中tomcat会启动不起来。我仔细对比了两个项目,发现可能是在idea中打开项目时,文件的选择不对,或者从仓库克隆代码时出现了错误,导致克隆下来的代码文件有一些问题。.idea文件出现在了整个项目文件的外面,这才导致了tomcat启动失败。

动态SQL

MyBatis的动态SQL包括以下几种元素,如下表所示
在这里插入图片描述

if元素

if元素是我们最常用的判断语句,相当于Java中的if语句。它常常与test属性联合使用。在大部分情况下,if 元素使用方法简单,让我们先了解它的基本用法。现在我们要根据角色名称(roleName)去查找角色,但是角色名称是一个可填可不填的条件,不填写的时候就不要用它作为查询条件。这是查询中常见的场景之一。if 元素提供了简易的实现方法,如下面代码所示

<select id="findRoles" parameterType="string" resultMap="roleResultMap">
select role_no, role_name,note from t_role where 1=1
<if test="roleName != null and roleName !=''">
and role_name like concat ('%',#{roleName},'%')
</if>
</select>

这句话的含义就是当我们将参数roleName传递进入到映射器中,采取构造对roleName的模糊查询。如果这个参数为空,就不要去构造这个条件,显然这样的场景在我们实际的工作中是十分常见的。通过MyBatis 的条件语句我们可以节省许多拼接SQL的工作,把精力集中在XML的维护上。

choose when otherwise元素

上面的例子相对于Java语言中的if语句就是一种非此即彼的关系,但是很多时候我们所面对的不是一种非此即彼的选择。在有些时候我们还需要第三种选择甚至更多的选择,也就是说,我们也需要switch…case…default 语句,而在映射器的动态语句中choose、when、otherwise元素承担了这个功能,让我们看看下面的场景。
·当角色编号不为空,则只用角色编号作为条件查询。
·当角色编号为空,而角色名称不为空,则用色名称作为条件进行模糊查询。
·当角色编号和角色名称都为空,则要求角色备注不为空。

让我们看看如何使用choose、when、otherwise元素去实现。

<select id="findRoles" parameterType="role" resultMap="roleResultMap">
select role_no, role_name, note from t_role
where 1=1
<choose>
<when test="roleNo != null and roleNo !=''">AND role_no = # { roleNo }
</when>
<when test="roleName != null and roleName !=''">
AND role_name like concat ( '%',# {roleName }, '% ')
</ when>
<otherwise>
AND note is not null</ otherwise>
</ choose>
</ select>

这样MyBatis就会根据参数的设置进行判断来动态组装SQL,以满足不同业务的要求。远比 Hibernate和JDBC大量判断Java代码要清晰和明确得多。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值