出现错误按照视频打的

来源: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回答

chrismorgen

2018-12-03

根据同学贴出的报错中,可能出现了两个问题,

1、建议你查看一下数据库连接是否正确。

2、如下图所示,可能是你xml文档中出现了错误,报错有可能出现在PersonMapper中,建议同学将你的PersonMapper.xml、mybatis-config.xml和dbconfig.properties的代码粘贴一下,注意不要粘贴到回复中,而是要粘贴到回答中,否则会失去代码提示,祝学习愉快~

http://img.mukewang.com/climg/5c0494e500013e5f08200169.jpg

1

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>


0

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

0
hq_新生活_2
回复
hhrismorgen
h 是保持一致的 还是显示文档中根元素后面的标记必须格式正确
h018-12-04
共2条回复

0 学习 · 4317 问题

查看课程