其他分享
首页 > 其他分享> > 【踩坑若干——BUG异闻录】

【踩坑若干——BUG异闻录】

作者:互联网

断断续续的记录一些BUG信息,我尽量给出解决办法

以前踩坑都是零散的记述,这次打算单独写个博客记述一下,如果能帮到大家我就很开心了,如果我的帮不上什么忙,也祝愿xdm可以早日解决bug,毕竟脑瘫bug有,但想必还没那么多.= 。=

 

bug1.【mybatis】

今天突然需要手写一遍mybatis基础,那么,配置数据库连接是必要的,我在mybatis-config.xml中配置部分 如下

<configuration>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis?serverTimezone=GMT%2B8amp;&useUnicode=true&amp;characterEncoding=utf8&amp;useSSL=true"/>
                <property name="username" value="root"/>
                <property name="password" value="password"/>
            </dataSource>
        </environment>
    </environments>
   
</configuration>

 此时连接正常, 这个时候我又想试试properties,当我把连接语句写在db.properties内的时候发现连不上了,url的value我是直接复制的,why?后来窝想起来了,

xml里面的& 都换成了&amp;  所以我的properties文件内容也得换回来,&amp;   ->>>>   & 如下

db.properties

driver=com.mysql.jdbc.Driver

url=jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=UTF-8

username=root

password=password

吐槽一下mysql ,低版本函数有的用不了,高版本 兼容性又不太行...

 

bug2.【mybatis】

错误:mybatis 根据id查询 结果除了di其他字段均为null

当我借助动态sql写一个查询语句后,具体是根据id查询 ,list多条输出。 测试执行结果 打印出来是一条条数据,但是所有字段除了id是正确的,其他子段都是null

猜测1:映射问题,是否是由于类似a_name 和 aName这种驼峰不对应导致,但显然并不是,我已经在配置文件中添加了驼峰命名规范:

<settings>
<!--使用驼峰命名转换,可以自动去掉数据库内字段名的下划线并转为java驼峰格式,例如bookName -> book_name -->
<setting name="mapUnderscoreToCamelCase" value="true" />
</settings>

而且普通的id查询是没有问题的

猜测2:那么如果不是驼峰问题,就要思考一下用foreach的list查id和普通id有啥区别,这个暂时先码住,因为新的bug来了

 

bug3.【boot&mybatis】

先重复一遍MVC执行思路:

大致上思路就是通过网页请求,控制层接受请求和参数并判断来执行对应方法,方法内会有语句来执行页面跳转或者函数调用(通常可以return直接页面跳转,或者return 对象.调用函数)。

借助controller层调用service层接口方法, 其接口方法再调用service接口实现类中的方法,在标有注解@Service的类,即业务层,

其可以通过@Autowired注解mapper或者其他方式来 依赖注入;这样就和mapper层(dao层)产生了联系,dao层再去调用xml内的sql语句来实现功能。

 

举例来说就是  前端请求->controller层获取->跳转或者执行方法->调用UserService接口的方法->接口再自动调用其实现类UserServiceImpl的方法->实现类中的方法又会调用UserMapper接口的方法->执行sql语句

增删改查报错: 

遇到报错 

  1. ..java.lang.NullPointerException: null,

实际上这种空指针有很多可能性, 但应该是缺少一些东西,这里我因为没有给UserService接口加注解@Autowired导致空指针

  2.Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.thymeleaf.exceptions.TemplateInputException: Error resolving template [user/test],

User/test是我的请求路径,很明显它无法解析,那多半是controller层出了问题,最后我发现我没加@RestController...这个注解加在controller类上,就可以不用在每个函数上加@ResponseBody注解。

  3.写模糊查询的的时候报了个错,说userName未找到,后来我发现我写了resultmap,其中property是userName,jdbcType="VARCHAR"

正确写法是这样:

user_name like concat('%',#{userName,jdbcType=VARCHAR},'%')
or name like concat('%',#{name,jdbcType=VARCHAR},'%')

其实打user的时候提示里有这个,但是我当时没当回事。。

  4.这个呢应该不算bug,只是 我用lombok依赖时发现函数里没法识别user.getId, lombok是省略getset的,所以报错可能是编译器没反应过来,也可能是没下载lombok插件,在idea里手动搜索并install即可

 

标签:异闻录,调用,name,接口,BUG,mybatis,方法,id,若干
来源: https://www.cnblogs.com/dabuliu/p/15008931.html