一、关于mybatis配置文件注释的问题
- mybatis-config.xml以及UserMapper.xml不能加注释(或者说中文注释),我这一旦写了中文注释的话就有以下错误:
java.lang.ExceptionInInitializerError
at com. .....
Caused by: org.apache.ibatis.exceptions.PersistenceException:
The error may exist in .... .xml
加注释的话会出现初始化错误,即使maven过滤了xml以及properties文件,target中成功生成了相关xml文件,依然会有初始化错误。
但是写注释里面写英文的话是没问题的。
已解决中文乱码问题, 核心配置文件编码改成utf8即可
2.记得注意maven过滤问题,maven默认目录是rescource,其他文件夹中的文件生成到target文件夹需要在父porn.xml以及子porn.xml中加入:
<!-- build中配置resources,防止资源导出失败-->
<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>
3.关于mysql时区问题
出现错误:
org.apache.ibatis.exceptions.PersistenceException:
### Error querying database. Cause: java.sql.SQLException: The server time zone value '�й���ʱ��' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.
若使用时区为UTF,则时间比中国快了8小时,应该在cmd(管理员模式)执行mysql -u root -p进入mysql,输入
set global time_zone="+8:00";
这样手动让时间增加8小时,从根源解决问题。
4.然而之后我又出现了时区问题,只好:
serverTimezone=UTC
5.注册Mapper文件
不知为何方式无法注册。
1.class方法扫描类。
2.resource方式扫描xml。
3.package方式扫描包。
<mappers>
<!-- <mapper class="com.natsumi.dao.UserMapper"/>-->
<!-- <mapper resource="com/natsumi/dao/UserMapper.xml"/>-->
<package name="com.natsumi.dao"/>
</mappers>
6.复杂查询
1.多对一
-
按照查询嵌套处理
根据第一次查询的结果进行第二次查询,类似子查询。
<select id="getStudent" resultMap="StuAndTea"> select * from student </select> <resultMap id="StuAndTea" type="Student"> <id column="id" property="id"/> <result column="name" property="name"/> <association column="tid" property="teacher" javaType="Teacher" select="getTeacher"/> </resultMap> <select id="getTeacher" resultType="Teacher"> select * from teacher where id = #{tid} </select>
-
按照结果嵌套处理
根据查询出来的结果,向resultMap结果集一一映射。