mybatis总结

mybatis

传统jdbc问题

  • 数据库连接创建,释放频繁,造成系统资源浪费

  • sql语句硬编码

  • sql查询条件硬编码

  • 结果集解析硬编码

mybatis对jdbc问题的解决方案:

  • 使用连接池管理数据库链接(在SqlMapConfig.xml里面配置数据库连接池)

  • sql语句配置在xxxMapper.xml里面

  • mybatis自动将java对象映射到sql语句(通过statement中的parameterType定义传入的参数类型)

  • mybatis自动将返回结果映射到java对象(通过statement中的resultType定义传入的参数类型)

mybatis的架构分层

  • API接口层:提供给外部使用的api,接收调用请求并调用数据处理层

  • 数据处理层:负责具体的sql查找,sql解析,sql执行和映射结果的处理,根据调用请求完成一次数据库操作

  • 基础支持层: 负责最基础的功能支撑,包括连接管理,事务管理、配置加载和缓存处理,为上层的数据处理层提供最基础的支撑

mybatis的简单使用例子

  • 通过配置文件得到SqlSessionFactory
  • 通过SqlSessionFactory获取SqlSession
  • 通过SqlSession进行crud和事务操作
  • 关闭SqlSession
public class App {
  public static void main(String[] args) {
    String resource = "mybatis‐config.xml";
    Reader reader;
    try {
    	//将XML配置文件构建为Configuration配置类
    	reader = Resources.getResourceAsReader(resource);
    	 // 通过加载配置文件流构建一个SqlSessionFactory  DefaultSqlSessionFactory
   		SqlSessionFactory sqlMapper = new SqlSessionFactoryBuilder().build(reader);
     	// 数据源 执行器  DefaultSqlSession
    	SqlSession session = sqlMapper.openSession();
    	try {
    		// 执行查询 底层执行jdbc 
    		User user = (User)session.selectOne("com.tuling.mapper.selectById", 1);
     		UserMapper mapper = session.getMapper(UserMapper.class);
    	  	System.out.println(mapper.getClass());
      		User user = mapper.selectById(1L);
     		System.out.println(user.getUserName());
      	} catch (Exception e) {
     		e.printStackTrace();
     	 }finally {
      		session.close();
    	}
    } catch (IOException e) {
       	e.printStackTrace();
    }
  }
}

mybatis的相关问题

  • 请介绍mabatis的sql语句解析原理
  • 请介绍mabatis缓存的原理
  • 请介绍mybatis插件的原理

mybatis设计模式总结

链接: link

mybatis的二级缓存原理分析

链接: link

mybatis的设计模式总结

链接: link

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值