MyBatis(1)源码包结构分析

本文介绍了MyBatis框架的核心组件及工作原理,包括执行器、数据源、缓存、SQL映射等功能模块,并通过示例展示了如何使用SqlSession进行数据库操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里写图片描述

包功能分析:目前是猜的,如果错了以后会改的

  1. annotations: 注解配置的东西,只有标识作用
  2. binding:里面有个MapperProxy, 看着像是根据Mapper接口实现CRUD功能的。
  3. builder:里面的annotation和xml包下,会根据配置文件解析
  4. cache:里面有个decorators包,看样子是实现了装饰器模式,impl使用了Map实现缓存功能
  5. cursor:游标,不是很了解
  6. datasource:数据源
  7. executor:执行器,执行语句,并返回结果
  8. io:解析资源
  9. javassist:这貌似是一个JVM字节码库,不用管
  10. jdbc:生成JDBC能处理的语句
  11. lang:@UsesJava7和@UsesJava8
  12. logger:日志相关,不用管
  13. mapping:还不知道,生成结果的吗
  14. ognl:动态生成SQL语句
  15. reflection:反射工具包
  16. scripting:??
  17. session:用户主要打交道的类
  18. transaction:事务相关
  19. type:SQL类型到Java类型的转换

    框架

    这里写图片描述

1.和数据库交互的第一种方式:直接使用SqlSession的方法。会将具体的实现,委托到Executor来实现
2.使用SqlSession.getMapper()来生成一个Mapper。

数据处理

1.解析#{……}里面的参数,使用JDBC的PreparedStatement.setXXX()来设置参数。
2.根据JDBC的返回结果ResultSet,来自动转换为Java数据类型,也有可能转换为List的列表,或一对多等的装换。

框架支持

1.事务管理:transaction包
2.数据源连接池:datasource包
3.缓存:cache包
4.SQL的配置

这里写图片描述

最简单的使用

public class SelectDemo {  

    public static void main(String[] args) throws Exception {  
        /* 
         * 1.加载mybatis的配置文件,初始化mybatis,创建出SqlSessionFactory,是创建SqlSession的工厂 
         * 这里只是为了演示的需要,SqlSessionFactory临时创建出来,在实际的使用中,SqlSessionFactory只需要创建一次,当作单例来使用 
         */  
        InputStream inputStream = Resources.getResourceAsStream("mybatisConfig.xml");  
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();  
        SqlSessionFactory factory = builder.build(inputStream);  

        //2. 从SqlSession工厂 SqlSessionFactory中创建一个SqlSession,进行数据库操作  
        SqlSession sqlSession = factory.openSession();  

        //3.使用SqlSession查询  
        Map<String,Object> params = new HashMap<String,Object>();  

        params.put("min_salary",10000);  
        //a.查询工资低于10000的员工  
        List<Employee> result = sqlSession.selectList("com.louis.mybatis.dao.EmployeesMapper.selectByMinSalary",params);  
        //b.未传最低工资,查所有员工  
        List<Employee> result1 = sqlSession.selectList("com.louis.mybatis.dao.EmployeesMapper.selectByMinSalary");  
        System.out.println("薪资低于10000的员工数:"+result.size());  
        //~output :   查询到的数据总数:5    
        System.out.println("所有员工数: "+result1.size());  
        //~output :  所有员工数: 8  
    }  

}  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值