1. 源码下载
mybatis-3 github
mybatis 带中文注释版
我下的是最新的,中文注释的版本目前最高是 3.3.0-SNAPSHOT
git clone --depth 1 [email protected]:mybatis/mybatis-3.git
只下载最新一个提交,这样比较快。
然后处理pom.xml
-
true
tofalse
本地调试不需要额外依赖引用
true
-> :%s/true/false/g
false
org.apache.ibatis.*;version=${project.version};-noimport:=true
- 注释 pdf plugin 这个插件我配置的阿里镜像没有,你可以试试其他的
- 将目录处理一下,其他文件统统删掉,目前我们只需要看有用的源码文件就行
接下来在 src/test/java
下面加入测试代码
mybatis-config.xml
log4j.xml
log4j.rootLogger=DEBUG,stdout
log4j.logger.org.mybatis=DEBUG
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.logDailyFile.layout.ConversionPattern = %5p %d %C:%m%n
MainTest.java
public class MainTest {
private static Logger log = Logger.getLogger(MainTest.class);
public static void main(String[] args){
String config = "resources/mybatis-config.xml";
// 测试代码
try (InputStream is = Resources.getResourceAsStream(config)) {
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
SqlSession sqlSession = factory.openSession();
AccountMapper accountMapper = sqlSession.getMapper(AccountMapper.class);
int num = accountMapper.insertSelective(new Account("java", 10));
log.info("---- num: " + num + " -----------");
// sqlSession.commit();
} catch (IOException e) {
e.printStackTrace();
}
}
}
- 其他是三个 mybatis 的文件
*Mapper.java
*Mapper.xml
*.java
可以自己通过插件生成
org.mybatis.generator
mybatis-generator-maven-plugin
1.3.7
true
true
src/main/resources/generatorSql.xml
可以参考 mybati-generator插件使用
经过这些步骤就可以把Mybatis
调试起来了,附上本文代码地址 sunyelw-MybatisStudy.git
坑
-
mysql
版本过高
最新的源码包中的MySQL
版本是8.*
, 需要配置时区
jdbc:mysql://localhost:3306/asia?serverTimezone=UTC&useSSL=false
当然可以调低到5.1.*
mysql
mysql-connector-java
5.1.44
-
mappers
配置DAO
目录
有以下四种方式
- package
- name
- mapper
- resource
- url
- class
相信只要用过spring
或springboot
的开发都知道,Mybatis
的这种映射是可以批量配置的,这种方式就是配置一个*Mapper.java
接口包名和一个*Mapper.xml
目录
在纯 Mybatis
的项目中也可以这么玩, 但有三个条件(缺一不可, 如果你发现可以请留言, 拜谢)
-
*Mapper.java
和*Mapper.xml
同名 -
*Mapper.java
和*Mapper.xml
同一个目录下面 -
配置方式为
但我不喜欢把*Mapper.java
和*Mapper.xml
放在同一个目录下面, 而
不支持 *Mapper.xml
之类的语法, 所以在目前这种纯 Mybatis
的项目中, 是不支持批量的
因此, 对于每一个*Mapper.xml
只能以下三种种任选其一
- mapper
- resource
- url
- class
大体原因是,Mybatis
对
标签的解析就是遍历, 是 package - name 方式就会先把目录下的 *Mapper.java
注册到配置中, 然后在同级目录找同名的 XML 文件进行注册, 而其他方式就是解析 *Mapper.xml
文件并将此文件关联的*Mapper.java
进行注册(通过 namespace
进行关联)
具体原因会写一篇文章从源码分析清楚