BuilderException: Error parsing SQL Mapper Configuration. Cause: java.lang.NullPointerException

本文介绍了在Spring Boot项目中集成Mybatis-Plus时,遇到的SqlSessionFactoryBean创建失败问题,重点在于解决报错中的NullPointerException,并给出了删除特定配置文件作为临时解决方案的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

集成mybatis-plus,sqlSessionFactory改为MybatisSqlSessionFactoryBean后,项目无法启动
 <bean id="sqlSessionFactory" class="com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean">

报错信息:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'adminActivityController': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'adminActivityServiceImpl': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'ActivityInfoMapper' defined in file [D:\develop\XXXX\mapper\GctivityInfoMapper.class]: Unsatisfied dependency expressed through bean property 'sqlSessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in class path resource [com/XXX/web/config/ApplicationContext.xml]: Invocation of init method failed; nested exception is org.springframework.core.NestedIOException: Failed to parse config resource: class path resource [com/XXX/web/XXX/SqlMapConfig.xml]; nested exception is org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: java.lang.NullPointerException
		
....................


		at com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean.buildSqlSessionFactory(MybatisSqlSessionFactoryBean.java:505)
		at com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean.afterPropertiesSet(MybatisSqlSessionFactoryBean.java:374)
		at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1677)
		at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1615)
		... 100 more
	Caused by: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: java.lang.NullPointerException
		at com.baomidou.mybatisplus.MybatisXMLConfigBuilder.parseConfiguration(MybatisXMLConfigBuilder.java:132)
		at com.baomidou.mybatisplus.MybatisXMLConfigBuilder.parse(MybatisXMLConfigBuilder.java:110)
		at com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean.buildSqlSessionFactory(MybatisSqlSessionFactoryBean.java:499)
		... 103 more
	Caused by: java.lang.NullPointerException
		at com.baomidou.mybatisplus.entity.GlobalConfiguration.getIdentifierQuote(GlobalConfiguration.java:204)
		at com.baomidou.mybatisplus.toolkit.SqlReservedWords.convertQuote(SqlReservedWords.java:168)
		at com.baomidou.mybatisplus.toolkit.SqlReservedWords.convert(SqlReservedWords.java:164)

解决方案:

将mybatis指定的配置文件删除

<mapper resource="com/xxx/mybatis/mapper/ActivityInfoMapper.xml"/>
"D:\java\IntelliJ IDEA 2019.2.4\jbr\bin\java.exe" -ea -Didea.test.cyclic.buffer.size=1048576 "-javaagent:D:\java\IntelliJ IDEA 2019.2.4\lib\idea_rt.jar=54212:D:\java\IntelliJ IDEA 2019.2.4\bin" -Dfile.encoding=UTF-8 -classpath "D:\java\IntelliJ IDEA 2019.2.4\lib\idea_rt.jar;D:\java\IntelliJ IDEA 2019.2.4\plugins\junit\lib\junit-rt.jar;D:\java\IntelliJ IDEA 2019.2.4\plugins\junit\lib\junit5-rt.jar;D:\java\ljj-di4\target\test-classes;D:\java\ljj-di4\target\classes;D:\MavenRepository\org\mybatis\mybatis\3.5.2\mybatis-3.5.2.jar;D:\MavenRepository\mysql\mysql-connector-java\8.0.11\mysql-connector-java-8.0.11.jar;D:\MavenRepository\com\google\protobuf\protobuf-java\2.6.0\protobuf-java-2.6.0.jar;D:\MavenRepository\junit\junit\4.12\junit-4.12.jar;D:\MavenRepository\org\hamcrest\hamcrest-core\1.3\hamcrest-core-1.3.jar" com.intellij.rt.execution.junit.JUnitStarter -ideVersion5 -junit4 Test1,testGetMemberByUnameAndSex java.lang.ExceptionInInitializerError at Test1.testGetMemberByUnameAndSex(Test1.java:80) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) at org.junit.runners.ParentRunner.run(ParentRunner.java:363) at org.junit.runner.JUnitCore.run(JUnitCore.java:137) at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68) at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47) at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242) at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70) Caused by: org.apache.ibatis.exceptions.PersistenceException: ### Error building SqlSession. ### The error may exist in SQL Mapper Configuration ### Cause: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: java.lang.NullPointerException at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30) at org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:52) at org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:36) at com.itheima.untils.MyBatisUtils.<clinit>(MyBatisUtils.java:20) ... 23 more Caused by: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: java.lang.NullPointerException at org.apache.ibatis.builder.xml.XMLConfigBuilder.parseConfiguration(XMLConfigBuilder.java:121) at org.apache.ibatis.builder.xml.XMLConfigBuilder.parse(XMLConfigBuilder.java:98) at org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:50) ... 25 more Caused by: java.lang.NullPointerException at org.apache.ibatis.builder.xml.XMLConfigBuilder.parseConfiguration(XMLConfigBuilder.java:105) ... 27 more Process finished with exit code -1 ??? @Test public void testGetMemberByUnameAndSex(){ SqlSession session= MyBatisUtils.getSession(); MemberDaoMapper memberDaoMapper=session.getMapper(MemberDaoMapper.class); List<Member> memberList=memberDaoMapper.getMemberByUnameAdnSex("李四",0); for(Member member:memberList){ System.out.println(member); } session.close(); }???<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.itheima.mapper.MemberDaoMapper"> <!-- 插入会员(主键自增,不指定member_id) --> <insert id="insert" parameterType="com.itheima.pojo.Member" keyProperty="member_id" useGeneratedKeys="true"> insert into ms_member(uname, password, email, sex, mobile) values (#{uname}, #{password}, #{email}, #{sex}, #{mobile}) </insert> <!-- 批量插入(无需指定member_id) --> <insert id="insert1"> insert into ms_member(uname, password, email, sex, mobile) values ('李白', '123456', 'aabb@qq.com', 0, '2434234'), ('程咬金', '123456', 'yyrry@qq.com', 0, '234324') </insert> <!-- 根据ID查询会员 --> <select id="getMemberById" resultType="com.itheima.pojo.Member"> select member_id, uname, password, email, sex, mobile from ms_member where member_id = #{member_id} </select> <!-- 查询所有会员 --> <select id="findAll" resultType="com.itheima.pojo.Member"> select * from ms_member </select> <!-- 按用户名和性别查询(方法1:参数顺序传递) --> <select id="getMemberByUnameAndSex" resultType="com.itheima.pojo.Member"> select * from ms_member where uname = #{0} and sex = #{1} </select> <!-- 按用户名和性别查询(方法2:@Param注解命名参数) --> <select id="getMemberByUnameAndSex1" resultType="com.itheima.pojo.Member"> select * from ms_member where uname = #{uname} and sex = #{sex} </select> <!-- 按用户名和性别查询(方法3:Map参数) --> <select id="getMemberByUnameAndSex2" resultType="com.itheima.pojo.Member"> select * from ms_member where uname = #{uname} and sex = #{sex} </select> <!-- 按用户名和手机号查询(动态SQL) --> <select id="findMemberByUnameAndMobile" resultType="com.itheima.pojo.Member" parameterType="com.itheima.pojo.Member"> select * from ms_member where 1=1 <if test="uname != null and uname != ''"> and uname like concat('%', #{uname}, '%') </if> <if test="mobile != null and mobile != ''"> and mobile like concat('%', #{mobile}, '%') </if> </select> <!-- 删除会员 --> <delete id="deleteById" parameterType="Integer"> delete from ms_member where member_id = #{member_id} </delete> <!-- 更新会员 --> <update id="updateById" parameterType="com.itheima.pojo.Member"> update ms_member set uname = #{uname}, password = #{password}, email = #{email}, sex = #{sex}, mobile = #{mobile} where member_id = #{member_id} </update> </mapper>????<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.itheima.mapper.MemberDaoMapper"> <!-- insert元素(修正后) --> <insert id="insert" parameterType="com.itheima.pojo.Member" keyProperty="member_id" useGeneratedKeys="true"> insert into ms_member(uname, password, email, sex, mobile) values (#{uname}, #{password}, #{email}, #{sex}, #{mobile}) </insert> <!-- 批量插入示例 --> <insert id="insert1"> insert into ms_member(uname, password, email, sex, mobile) values ('李白', '123456', 'aabb@qq.com', 0, '2434234'), ('程咬金', '123456', 'yyrry@qq.com', 0, '234324') </insert> <!-- 根据ID查询会员 --> <select id="getMemberById" resultType="com.itheima.pojo.Member"> select member_id, uname, password, email, sex, mobile from ms_member where member_id = #{member_id} </select> <!-- 查询所有会员 --> <select id="findAll" resultType="com.itheima.pojo.Member"> select * from ms_member </select> <!-- 按用户名和性别查询(修正方法名和SQL) --> <select id="getMemberByUnameAndSex" resultType="com.itheima.pojo.Member"> select * from ms_member where uname = #{uname} and sex = #{sex} </select> <select id="getMemberByUnameAndSex1" resultType="com.itheima.pojo.Member"> select * from ms_member where uname = #{uname} and sex = #{sex} </select> <select id="getMemberByUnameAndSex2" resultType="com.itheima.pojo.Member"> select * from ms_member where uname = #{uname} and sex = #{sex} </select> <!-- 按用户名和手机号查询(已修正mobile条件) --> <select id="findMemberByUnameAndMobile" resultType="com.itheima.pojo.Member" parameterType="com.itheima.pojo.Member"> select * from ms_member where 1=1 <if test="uname != null and uname != ''"> and uname like concat('%', #{uname}, '%') </if> <if test="mobile != null and mobile != ''"> and mobile like concat('%', #{mobile}, '%') </if> </select> <!-- delete元素 --> <delete id="deleteById" parameterType="Integer"> delete from ms_member where member_id = #{member_id} </delete> <!-- update元素 --> <update id="updateById" parameterType="com.itheima.pojo.Member"> update ms_member set uname = #{uname}, password = #{password}, email = #{email}, sex = #{sex}, mobile = #{mobile} where member_id = #{member_id} </update> </mapper>
最新发布
06-11
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

抹除不掉的轻狂丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值