前言
B站Up狂神說的教程,寫的挺好的,東西也新。強烈推薦
https://www.bilibili.com/read/cv5702420
微信文檔
狂神說MyBatis01:第一個程序:https://mp.weixin.qq.com/s/vy-TUFa1Rb69ekxiEYGRqw
狂神說MyBatis02:CRUD操作及配置解析:https://mp.weixin.qq.com/s/efqEupNSPZUKqrRoGAnxzQ
狂神說MyBatis03:ResultMap及分頁:https://mp.weixin.qq.com/s/LXXIR7W_kZBHPIDqkNwrLg
狂神說MyBatis04:使用注解開發:https://mp.weixin.qq.com/s/3x3ynp5qhGNP-leeOxBU6g
狂神說MyBatis05:一對多和多對一處理:https://mp.weixin.qq.com/s/Dpt0LHTgx0kL7RCk8PZ2aw
狂神說MyBatis06:動態SQL:https://mp.weixin.qq.com/s/gtXsTG2naMTDnC6aqQICMg
狂神說MyBatis07:緩存:https://mp.weixin.qq.com/s/MwkfQNMXD6oO3dOaQYDdGA
配置文件包含中文注釋導致出錯
The error may exist in com/xuw/dao/UserMapper.xml
### Cause: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: org.apache.ibatis.builder.BuilderException: Error creating document instance. Cause: com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: 1 字節的 UTF-8 序列的字節 1 無效。
UserMapper.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">
<!--namespace=綁定一個對應的Dao/Mapper接口-->
<mapper namespace="com.xuw.dao.UserDao">
<!--select查詢語句-->
<select id="getUserList" resultType="com.xuw.pojo.User">
select * from mybatis.user
</select>
</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>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=UTF-8"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/xuw/dao/UserMapper.xml"/>
</mappers>
</configuration>
解決辦法1
刪除所有中文注釋
解決辦法2
解決:解析xml時,有中文,此時把xml文件的頭
<?xml version="1.0" encoding="UTF-8"?>
改成:
<?xml version="1.0" encoding="GBK"?>
即可!
解決辦法3
在Maven配置文件pom.xml中插入
<project>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
</project>
讓整個項目統一字符集編碼,就需要設定UTF-8
IDEA注釋如何在光標位置生成
在注釋的Ctrl+/的時候發現注釋老是從第一列開始生成,很難受
就問你難不難受?????每次手動調整屬實憨憨,然后百度一下
File
> Settings
> Editor
> Code Style
> XML
>Code Generation
其他語言同理
舒服了~~~~
使用association時映射出錯
報錯
Cause: java.lang.IllegalStateException: No typehandler found for property name
遇到這個錯誤試了很多網上的方法,都不能解決,最后找到解決方案,順便把出現錯誤的幾種原因總結了一下
1、mapper文件中的所寫的對象屬性名和數據庫字段名不能對應
2、mapper文件中的所寫的對象屬性類型和數據庫字段類型不對應(我的錯誤)
3、對象屬性的set方法中類型和數據庫字段類型不對應
排錯過程
出現了錯誤就一一排查
排查問題1
### The error may exist in com/xuw/dao/StudentMapper.xml
系統提示可能出錯的位置
<select id="getStudents2" resultMap="studentTeacher2">
select s.id sid,s.name sname,t.name tname
from student s,teacher t
where s.tid=t.id
</select>
<resultMap id="studentTeacher2" type="Student">
<result property="id" column="sid"/>
<result property="name" column="sname"/>
<association property="teacher" javaType="Teacher">
<result property="name" column="tname"/>
</association>
</resultMap>
與老師寫的多次對比后沒發現問題(不存在對象屬性名和數據庫字段名不能對應的問題)
排查問題2
實體類的代碼
package com.xuw.pojo;
import lombok.Data;
import javax.swing.*;//當時打完看到引入了這個包,都沒有說排查一下(因為實體類中一般沒有這個包),還是不夠小心啊
@Data
public class Student {
private int id;
private Spring name;//這里打快了寫成可Spring,屬實憨皮
private Teacher teacher;
}
從XML文件到接口文件再到實體類文件,終於發現了錯誤。把String
打成了Spring
編程確實是一項對細心程度要求極高的事,以后一定要注意
改成String就成功執行了
問題3
至於問題3,set方法的問題,我用的Lombok插件,改了屬性類型就自動注解成String類型了。
挖坑
面試高頻
- Mysql引擎
- InnoDB底層原理
- 索引
- 索引優化!
后記
邊看視頻邊敲代碼,用了3天左右吧,大概16.5個小時。基礎學完了一切才剛剛開始。重要的是在實踐中提高熟練度和學習其中的源碼及設計思想。