IDEA关于Mybatis中org.apache.ibatis.exceptions.PersistenceException/BindingException:问题

  1. sql语句是否正确

    查看Mapper.xml文件中的sql语句是否不会出现语法错误:如

查:select * from 数据库表名 where x=#{}
	select * from tb_name where··group by··;
增:insert into tb_name(id···)values(),(),();
删:delete from tb_name where id=3; 	<!--delete后面有"from"-->
改:update tb_name set ··(score=189) where ··(id=2)<!--update后面有"from"-->
  1. 相关Mapper.xml是否关联到对应的Mapper.java接口
<mapper namespace="com.bjpowernode.mybatis.mapper.ClazzMapper">
<!--namespace需要写全限定名称-->
  1. sql语句id是否与对应Mapper.java接口方法相同
<!--如果Mapper.java接口的方法名是selectById(Integer id),那么Mapper.xml的sql语句的id需要一一对应-->
<select id="selectById" resultType="xxx"> 
  1. 返回值类型是否正确

    select语句是要在Mapper.xml确定返回类型的:如

<select id="selectxxx" resultType="Car"> <!--resultType中选择返回类型,一般是某个pojo类的全限定名称,可以使用别名-->
  1. 查看是否在核心配置文件(mybatis-config.xml)中开启驼峰命名自动映射
<settings><!--开启驼峰命名自动映射-->
	<setting name="mapUnderscoreToCamelCase" value="ture"/>
</settings>
如果没有开启驼峰命名自动映射:
也可以使用as给列起别名(使sql字段名与相关pojo类对应的属性名相同)
也可以使用resultMap进行结果映射(什么是resultMap结果映射结尾补充)
  1. Mapper.xml是否和mapper在同一个包下(使用驼峰自动映射时)
    com.bjpowernode.mapper.CarMapper
    在这里插入图片描述
  2. Mapper.xml映射到核心配置文件(mybatis.config.xml)是否书写正确
<mappers>
<!--下面三种方式任都可以,使用第二种是可以把鼠标放在CarMpper名上,可以看到对应哪个模块的-->
<mapper resource="com/bjpowernode/mybatis/mapper/CarMapper.xml"/>//到 .xml文件
<mapper class="com.bjpowernode.mybatis.mapper.CarMapper"/> //到 Mapper.java类(建议使用这种)
<package name="com.bjpowernode.mybatis.mapper"/>
</mappers>
  1. 在开启驼峰映射的基础上:查看pojo类属性名与数据库表中字段名是否对应
使用前提: 属性名遵循Java规范,数据库表列名遵循SQL的命名规范
Java命名规范:首字母小写,后面每个单词首字母大写,遵循驼峰命名方式
SQL命名规范:全部小写,单词之间用下划线分割
例:carNum      car_num

10.一个项目有多个模块是,而不同模块下面存在相同的接口名称,那么可能在核心配置文件中映射到了其他模块接口(这是我遇到的BindingException异常)

比如:我在同一个项目中,存在A和B模块,而A和B模块存在相同的接口CarMapper,
在使用B模块时:可能会映射到了A模块的CarMapper接口
解决方法就是:在左边的Maven中右击鼠标选择:-Unlink Maven Projects(关闭Maven项目)

希望上面的内容可以帮助到大家!!!
下面内容与本专题无关

<!--专门定义一个结果集映射,在这个结果集映射当中指定数据库表的字段名和Java类的属性名的对应关系
1.type属性,用来指定POJO类的类名
2.id属性:指定resultMap的唯一标识,这个id将来要在select标签中使用
3.javaType="":返回的值在pojo类中的类型
4.jdbc="":返回的值在数据库表中的类型
-->
<resultMap id="carResultMap" type="Car">
<!--要全限定名称,起别名之后可以直接用类名/自己起的名-->
    
<!--建议配置一个id标签,这样可以提高效率,不是必须的-->
<id property="POJO类的属性名" column="数据库表的字段名(主键)"/>
    
<result property="POJO类的属性名" column="数据库表的字段名"/>
<result property="POJO类的属性名" column="数据库表的字段名"/>
    ....
</resultMap>
<!--resultMap属性值是,上面的resultMap的id-->
<select id="selectAllByResultMap" resultMap="carResultMap">
        select * from t_car
</select>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值