首页 > 编程语言 >黑马程序员Javaweb综合案例错误总结整理

黑马程序员Javaweb综合案例错误总结整理

时间:2023-01-03 21:02:23浏览次数:69  
标签:status Javaweb brand 查询 程序员 brandName id resp 黑马

案例整理(呕心沥血的教训)

其他的我大部分还是不知道那里出了问了,我这个新建的项目must3终于成功了

  1. 那个品牌名称和企业名称没有,是要在BrandMapper里加注解@ResultMap

  2. 一直报那个com.alibaba:fastjson,找不到,最后在Project->Artifacts->xxx:war exploded->lib->library中把三个都加进去servlet才 显示数据

第二天的问题

  1. 这Servlet中的这里面可能不能有中文,有中文就识别不了

     response.getWriter().write("sss");//我原本是写的"哈哈哈添加成功了"
  2. 数据库表tb_brand写成了brand

  3. 做删除功能时,前端id传不进去

    •  int id = JSON.parseObject(params, int.class)//这个不行,int改为Integer就可以进来了
    • 上面id解决了,但是从html页面获取的id还是传不进servlet,最终用(热爱编程的小白白)的代码成功了

    • id传进去后,点删除,数据库并没有操作,后来检查发现是没有提交事务

    修改功能:

    1. servlet中response没有修改"sss"为"uuu"

    2. html中update_1()方法没有传递index,row参数

    3. BrandServiceImpl里又忘记添加事务回滚,服

    4. 最后一个问题,一直修改不成功,问题肯定初中BrandMapper里面,最后把注解的代码删掉,换成xml的,就成功了.也不知道为啥

    批量修改:

    1. BrandServiceImpl里又忘记添加事务回滚,服*2

    2.  let selectionElement = this.multipleSelection[i];//这里不能直接在multipleSelection[i].id
       this.selectIds[i] = selectionElement.id;
    3. 最后一个问题:点完确认删除后,页面没有刷新,因为reps不对

       alert("resp=" + resp.data)//resp=yeah
       alert("resp=" + resp)//resp=[object Object]
       if(resp.data === "yeah"){//这里我原本写的是resp === "yeah"

    我测试发现没有写回滚代码,也能正常提交事务的

分页查询(后端代码)

要再过一遍

问题一:

  String b = request.getParameter("b");
 int b2 = Integer.parseInt(b);//就是我再浏览器传参数写的是b2=xxx,但是应该写b=xxx

问题二:品牌名称和企业名称出不了是因为sql语句上面忘记添加@ResultMap("brandResultMap")

问题三:换页了后没有刷新查询,因为没有在方法里加this.selectAll()

  //分页,分条
  handleSizeChange(val) {
      console.log(`每页 ${val} 条`);
      this.pageSize = val;
      this.selectAll();//zh
  },
  handleCurrentChange(val) {
      console.log(`当前页: ${val}`);
      this.currentPage = val;
      this.selectAll();
  }

条件搜索

问题一:在前端ajax中传完参数重新查询时报错

Uncaught (in promise) TypeError: this.selectAll is not a function

代码:

 }).then(function (resp){//这一行代码的问题                    axios.post("http://localhost:8080/must3_war/deleteServlet",row.id).then((resp)=> {
   if (resp.data === "ddd") {
   this.selectAll();

then中使用了function callback,因此在回调函数里面,this是指向HTTP request event,已经不是外部的默认vue对象了。

简而言之就是then里面不能用this,外面可以用

详情:

https://blog.csdn.net/IT__learning/article/details/114280525

问题二:selectAll方法一直把数据传不进去,还是Mapper.xml里没有把相关字段映射

 <if test="brand.brandName != null and brand.brandName != ''">
 and brand_name like #{brand.brandName}//这里原本都没有加brand.

问题三:

 select count(*) from tb_brand//错误:select count (*) from tb_brand

这个sql语句仅仅是因为count后面加了个空格就无法实现,我艹了

总结mybatis中where查询

  • where中test为true则加入sql语句中

  • if、choose、when、otherwise比较

    • if是直接拼接,重点说一下choose语句

choose(单条件查询)

  • 只有一个条件生效,也就是只执行满足的条件when,没有满足的条件就执行otherwise,表示默认条件。

  •  <where>
     <choose>
             <when test="brand.status != null"><!--相当于case-->
                  status = #{brand.status}
             </when>
             <when test="brand.companyName != null and brand.companyName != '' "><!--相当于case-->
                  company_name like #{brand.companyName}
             </when>
             <when test="brand.brandName != null and brand.brandName != ''"><!--相当于case-->
                  brand_name like #{brand.brandName}
             </when>
     </choose>
     </where>
     limit #{begin}, #{size}

image-20230103140757613

在我搜索的时候,用choose就是只要前面有值,就只查询这一个,第二个无论填什么也不报错,也不查询,相当于没有这条语句

其实就可以按照switch-case来理解,单条件查询,可以-用做下拉框单条件查询功能

where+if(多条件查询)

  •  select *
     from tb_brand
     <where>
            <if test="brand.status != null"><!--相当于case-->
                and status = #{brand.status}
            </if>
            <if test="brand.companyName != null and brand.companyName != '' "><!--相当于case-->
                and company_name like #{brand.companyName}
            </if>
            <if test="brand.brandName != null and brand.brandName != ''"><!--相当于case-->
                and brand_name like #{brand.brandName}
            </if>
     </where>
  • 记得加and

模糊查询(在service里面改一下实体)

 String brandName = brand.getBrandName();
 if (brandName != null && brandName.length() > 0) {
    brand.setBrandName("%" + brandName + "%");
 }

多条件的话记得判断数据是否为空

修改status显示的值

 public String getStatusStr_ghy() {
    if (status == null) {
        return "未知";
    }
    return status == 0 ? "禁用" : "启用";
 }

这里getStatusStr_ghy完全没有任何定义,也可以传到前端去,但是一定要注意这个S要小写,得传statusStr_ghy这个字符串

B站弹幕:

1.fastjson 将对象转为JSON字符串,用的应该是get方法,键是方法名去掉get首字母小写

2.虽然实体类中没有定义statusStr变量,但有getStatusStr这个方法,这里应该是通过get的方法获取prop的

3.而prop对应的status属性,在mabtis中查询的时候对应getStatus方法,同样改为statusStr则对应GetStatusStr方法

 

 

 

标签:status,Javaweb,brand,查询,程序员,brandName,id,resp,黑马
From: https://www.cnblogs.com/gaohuaiyu/p/17023362.html

相关文章

  • 从0开始的小白如何一步步进入程序员的职业生涯
    #程序员#程序生涯分享# 转眼间,不知不觉我已经是一个北漂近6年的程序员了。现在想起初到北京的情景,仿佛就在昨日刚刚发生。2016年年初,我和大多数人一样,懵懵懂懂的来到了北京......
  • 24.Java程序员的经典错误
    1.使用Objects.equals比较对象是JDK7提供的一种方法,可以快速实现对象的比较,有效避免烦人的空指针检查。但是这种方法很容易用错,例如:1LonglongValue=123L;2System......
  • 【独家揭秘】走进程序员的周末
    一个普通程序员,周末不出差、不加班、不出去玩的时候每天都在干什么呢?9点-12点昨晚失眠了,2点多才睡着,今天没有定闹铃,9:54自然醒一睁眼看见空调。突然想起来今天是周末了,强......
  • 读书之《程序员修炼之道:从小工到专家》十二月第二篇
    总归是来到最后一章,也结束了这个学期的学习生活有些团队指定某个成员担任项目资料管理员,负责协调文档/代码仓库。其他团队成员的查找资料时,可以首先找这个人。通过阅读正......
  • 程序员什么情况下适合跳槽?
    跳槽的原因是什么?如果一个地方什么都好的话,往往是不会让人萌生去意的,当然不排除有些人就是想出去体验不同的生活,但大多数情况下,是不太会挪窝的。那么,哪些情况下不能轻易做......
  • 从高考到程序员
    一、高考花开花落有尽时,念花香时已千年。也许有很多人认为,每个阶段都该有不同的朋友。然而他们不知道,在岁月的末梢处,会有当时回忆的酸涩。高考对于一个求学之人来说,无......
  • Java程序员必看的 13 本 Java 书籍!
    关乎于程序员,除了做项目来提高自身的技术,还有一种提升自己的专业技能就是:多!看!书! 毕竟,书是学习的海洋呢!So,Java程序员你们准备好了吗?双手奉上Java程序员必读之热门书单。......
  • 程序员需要的日常(收费)软件(都免费)
    程序员需要的日常(收费)软件(都免费):一、内存溢出分析工具:内存溢出分析工具MemoryAnalyzer链接​​https://pan.baidu.com/s/1-03ZK3Z-J8dE3bZt4qCyCg​​提取码tnpz二、缓......
  • 中秋节的特别礼物----属于程序员的专有浪漫
    ​​前言:​​​马上不就到中秋节了嘛,我看到群里很多小伙伴们在纠结如何去送出属于自己的专属浪漫,也有小伙伴私信我,说想让我出一期中秋节的表白代码或者祝福程序!好的安排~......
  • 【JavaWeb】Http get请求乱码、post请求乱码,html页面乱码、jsp页面乱码,控制台tomcat日
    目录​​1、乱码原因和解决思路​​​​2、准备知识(新手必读,老司机跳过)​​​​2.1字符集​​​​2.2URL编码​​​​2.3 javawebservlet ​​​​3 浏览器编码/解码......