Mybatis随笔(一) 构建源码调试环境


1. 源码下载

mybatis-3 github
mybatis 带中文注释版
我下的是最新的,中文注释的版本目前最高是 3.3.0-SNAPSHOT

git clone --depth 1 [email protected]:mybatis/mybatis-3.git

只下载最新一个提交,这样比较快。
然后处理pom.xml

  • true to false 本地调试不需要额外依赖引用
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


  1. mysql 版本过高
    最新的源码包中的MySQL版本是8.*, 需要配置时区
jdbc:mysql://localhost:3306/asia?serverTimezone=UTC&useSSL=false

当然可以调低到5.1.*


  mysql
  mysql-connector-java
  5.1.44

  1. mappers 配置DAO目录

有以下四种方式

  • package
    • name
  • mapper
    • resource
    • url
    • class

相信只要用过springspringboot的开发都知道,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进行关联)

具体原因会写一篇文章从源码分析清楚

你可能感兴趣的:(Mybatis随笔(一) 构建源码调试环境)