出现错误按照视频打的
来源:2-1 Mybatis单参数传递
qq_新生活_2
2018-12-02 11:42:09
ERROR 12-02 11:36:59,586 Could not get a databaseId from dataSource (VendorDatabaseIdProvider.java:54)
java.sql.SQLException: Unknown system variable 'query_cache_size'
Exception in thread "main" org.apache.ibatis.exceptions.PersistenceException:
### Error building SqlSession.
### The error may exist in mybatis/PersonMapper.xml
### Cause: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: org.apache.ibatis.builder.BuilderException: Error creating document instance. Cause: org.xml.sax.SAXParseException; lineNumber: 41; columnNumber: 4; 文档中根元素后面的标记必须格式正确。
3回答
根据同学贴出的报错中,可能出现了两个问题,
1、建议你查看一下数据库连接是否正确。
2、如下图所示,可能是你xml文档中出现了错误,报错有可能出现在PersonMapper中,建议同学将你的PersonMapper.xml、mybatis-config.xml和dbconfig.properties的代码粘贴一下,注意不要粘贴到回复中,而是要粘贴到回答中,否则会失去代码提示,祝学习愉快~

chrismorgen
2018-12-04
你好同学,建议你将下图代码粘贴到你的PersonMapper.xml文件试试会不会报错,如果还有问题可以继续提问,祝学习愉快~
<?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.mooc.mybatis.dao.PersonMapper" >
<resultMap id="BaseResultMap" type="com.imooc.mybatis.bean.Person" >
<id column="id" property="id" jdbcType="INTEGER" />
<result column="username" property="username" jdbcType="VARCHAR" />
<result column="email" property="email" jdbcType="VARCHAR" />
<result column="gender" property="gender" jdbcType="VARCHAR" />
<result column="dept_id" property="deptId" jdbcType="INTEGER" />
</resultMap>
<sql id="insertColum" >
username, email, gender, dept_id
</sql>
<insert id="addPerson" parameterType="person">
insert into person(username,email,gender) VALUES (#{username},#{email},#{gender})
</insert>
<select id="getAllPersons" resultType="person">
SELECT * from person
</select>
<!--<insert id="addPersons">
insert into person(username,email,gender) VALUES
<foreach collection="persons" item="person" separator=",">
(#{person.username},#{person.email},#{person.gender})
</foreach>
</insert>-->
<!-- <insert id="addPersons">
<foreach collection="persons" item="person" separator=";">
insert into person(username,email,gender) VALUES
(#{person.username},#{person.email},#{person.gender})
</foreach>
</insert>-->
<!-- insert into person(username,email,gender) VALUES("zhangsan","zhangsan@163.com","F"),("lisi","lisi@163.com","F")
insert into person(username,email,gender) VALUES("tom","zhangsan@163.com","F");
insert into person(username,email,gender) VALUES("jerry","lisi@163.com","F")-->
<select id="getPersonsByIds" resultType="person">
select * from person where id in
<foreach collection="array" item="id" index="i" open="(" close=")" separator=",">
#{id}
</foreach>
</select>
<select id="getPersonByCollection" resultType="person">
select * from person where id=#{test[0]}
</select>
<!-- 根据多参数进行数据的查询-->
<select id="getPersonByNameAndGender" resultType="person">
select * from person where username=#{username} and gender=#{param2}
</select>
<!-- 根据id删除数据-->
<delete id="deletePerson" parameterType="int">
delete from person where id=#{parameter1}
</delete>
</mapper>
qq_新生活_2
提问者
2018-12-03
PersonMapper.xml
<?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.imooc.mybatis.dao.PersonMapper" >
<resultMap id="BaseResultMap" type="com.imooc.mybatis.bean.Person" >
<id column="id" property="id" jdbcType="INTEGER" />
<result column="username" property="username" jdbcType="VARCHAR" />
<result column="email" property="email" jdbcType="VARCHAR" />
<result column="gender" property="gender" jdbcType="VARCHAR" />
<result column="dept_id" property="deptId" jdbcType="INTEGER" />
</resultMap>
<delete id="deletePerson" parameterType="int">
delete from person where id=#{id}
</delete>
</mapper>
mybatis-config.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 加入DB配置文件 -->
<properties resource="dbconfig.properties"></properties>
<!-- 配置配置项 -->
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/>
<setting name="jdbcTypeForNull" value="NULL"/>
<setting name="lazyLoadingEnabled" value="true"/>
<setting name="aggressiveLazyLoading" value="false"/>
</settings>
<typeAliases>
<package name="com.imooc.mybatis.bean"/>
</typeAliases>
<environments default="dev_mysql">
<environment id="dev_mysql">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</dataSource>
</environment>
</environments>
<databaseIdProvider type="DB_VENDOR">
<property name="MySQL" value="mysql"/>
<property name="Oracle" value="oracle"/>
<property name="SQL Server" value="sqlserver"/>
</databaseIdProvider>
<mappers>
<mapper resource="mybatis/PersonMapper.xml"/>
</mappers>
</configuration>
dbconfig.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis?allowMultiQueries=true
jdbc.username=root
jdbc.password=123456
相似问题