当前位置: 首页 >服务端 > 使用Mybatis出现的问题+配置优化+ResultMap

使用Mybatis出现的问题+配置优化+ResultMap

一、可能出现的问题

1、Error querying database.

Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

原因:jdbc.properties 文件

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

 

解决:将useSSL=true 改为 useSSL=false

useSSL=true 作用:使用JDBC跟你的数据库连接的时候,你的JDBC版本与MySQL版本不兼容,MySQL的版本更高一些,在连接语句后加上“useSSL=‘true’” ,就可以连接到数据库了

 

2、java.lang.ExceptionInInitializerError

Error building SqlSession

原因:UserMapper.xml文件

<select id="getUserList" resultType="User">  select * from testmybatis.user</select>

 

方法1:将resultType="User" 改为 resultType="com.zy.pojo.User"

方法2:在mybatis配置文件(我的是mybatis-config.xml)中添加类别名

<typeAliases>  <package name="com.zy.pojo"/></typeAliases>

注意写在 <properties>、<settings> 的标签下面,<environments> 标签上面

 

这里推荐方法2,修改一次就不用再一个一个的写 包路径+实体类 了

 

 

3、java.io.IOException: Could not find resource com/zy/dao/UserMapper.xml

 

原因:因为maven约定大于配置,所以配置文件存在没有被导出或者生效

 

解决:在pom.xml中添加

<build><resources><resource><directory>src/main/resources</directory><includes><include>**/*.properties</include><include>**/*.xml</include></includes><filtering>true</filtering></resource><resource><directory>src/main/java</directory><includes><include>**/*.properties</include><include>**/*.xml</include></includes><filtering>true</filtering></resource></resources></build>

 

 

二、Mybatis配置文件优化

在Mybatis配置文件mybatis-config.xml中

configuration配置结构

properties 属性

settings 设置

typeAliases 类型命名

typeHandlers 类型处理器

objectFactory 对象工厂

plugins 插件

environments 环境

  environment 环境变量

    transactionManager 事务管理器

    dataSource 数据源

databaseIdProvider 数据库厂商标识

mappers 映射器

(必须严格按照这个结构写,不然无法通过)

 

1.引入外部配置文件

在 mybatis-config.xml 配置文件中,引入外部配置文件 jdbc.properties 配置环境,方便修改

jdbc.properties:

driver=com.mysql.jdbc.Driverurl=jdbc:mysql://localhost:3306/testmybatis?useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8useame=rootpassword=123456

 

mybatis-config.xml:

<properties resource="jdbc.properties"></properties><typeAliases><!--<package name="com.zy.pojo"/>--></typeAliases><!--配置环境--><environments default="mysql"><!--有多个环境时,通过修改default="id"来实现选择--><environment id="mysql"><!--JDBC事务管理--><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="${driver}"/><property name="url" value="${url}"/><property name="useame" value="{useame}"/><property name="password" value="{password}"/></dataSource></environment></environments>
 
 

 三、ResultMap(结果映射集)

当数据库字段与实体类字段的属性名不一致时,会出现返回null的问题

比如:

  这是表:

使用Mybatis出现的问题+配置优化+ResultMap _ JavaClub全栈架构师技术笔记

 

 

  这是对应实体类:

使用Mybatis出现的问题+配置优化+ResultMap _ JavaClub全栈架构师技术笔记

 

 

通过junit进行测试:

使用Mybatis出现的问题+配置优化+ResultMap _ JavaClub全栈架构师技术笔记

 

 可以发现返回的返回的是null

 

这时可以通过ResultMap(结果映射集)来解决

  UserMapper.xml:

<!--<select id="getUserList" resultType="User">select * from testmybatis.user</select>--><resultMap id="UserMap" type="User"><!--column对应数据库的字段,property对应实体类属性 --><result column="id" property="id"/><result column="name" property="useame"/><result column="pwd" property="password"/></resultMap><select id="getUserList" resultMap="UserMap">select * from testmybatis.user</select>
 

 

再进行测试:

使用Mybatis出现的问题+配置优化+ResultMap _ JavaClub全栈架构师技术笔记

 成功!

 

作者:LonZyuan
来源链接:https://www.cnblogs.com/kzyuan/p/12589437.html

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。





本文链接:https://www.javaclub.cn/server/118535.html

标签:MyBatis
分享给朋友:

“使用Mybatis出现的问题+配置优化+ResultMap” 的相关文章

centos7中 yum的安装 2022年05月19日 19:54:29
Python 树表查找 2022年05月20日 21:28:27
中间件RabbitMQ 2022年05月23日 16:45:42
炒冷饭系列:设计模式 装饰模式 2022年05月26日 23:29:24
大流量下的 ElasticSearch 搜索演进 2022年05月28日 23:12:48