Mybatis (一)入门

Mybatis 是一个连接数据库和我们java项目的持久层框架。
我们常用的连接DB的方式还有:

  • JDBC方式直接连接
    • 优点:快
    • 缺点:需要自己写大量获取连接,维护连接的jdbc相关代码,实现数据库表到对象的转换。而这些东西与我们的业务代码不相关。
  • Hibernate方式连接
    • 优点: hibernate帮我们封装了jdbc相关操作,实现了对象和表之间映射关系,我们只需要进行简单配置即可,大大简化了开发流程
    • 缺点: 当我们需要进行多表join来获取数据时,hibernate实现起来就比较麻烦,而且效率也会降低

Mybatis 就是集JDBC和Hibernate的优点于一体的一个产物

Mybatis 配置

Mybatis的配置文件核心由三部分构成








  
    
      
      
        
        
        
        
      
    
  


  
    
  


part1: 指定了mybatis的dtd文件路径,这个是必须的,固定写法

Body configuration 由两部分组成

part2: environments,顾名思义配置了我们连接db的信息

  • transactionManager 定义了事务管理方式
  • dataSource 则配置了所要连接的db的详细信息

part3: mapper, 定义了我们可以执行的sql语句,我们可以通过sqlSession来执行它们。
我们通过一个简单的例子来学习一下mapper相关知识




  

我们可以通过id来引用定义的sql语句,#{xx} 代表输入参数,其他都是自解释的相信直接可以看懂,不在多解释。
调用方式1:namespace+id 方式

Blog blog = session.selectOne(
  "org.mybatis.example.BlogMapper.selectBlog", 101);
  • 缺点: 需要记住namespace name, string拼写容易出错
    所以这里还有一个更好的,也是我个人推荐用的一个方式:
    定义一个和mapper文件namespace同名的interface,其中的方法名和我们定义的id名相同,返回类型也相同,参数也一样。
    然后我们就可以通过下面这样调用
public Interface BlogMapper{
    Blog selectBlog(int id);
}

BlogMapper mapper = session.getMapper(BlogMapper.class);
Blog blog = mapper.selectBlog(101);

是不是更简单,更酷。

当然这里还有其他配置,我们这里只是列出了最基本,最核心不可缺的几个部分

Mybatis 调用

下面我们介绍如何调用mybatis来读取数据库

//resource 必须是类路径下的,要不会找不到
String resource = "org/mybatis/example/mybatis-config.xml";
//step1
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory =
  new SqlSessionFactoryBuilder().build(inputStream);
//step2
SqlSession sqlSession = sqlSessionFactory.openSession();
//step3
BlogMapper blogMapper = sqlSession.getMapper(BlogMapper.class);
step4
Blog blog = mapper.selectBlog(101);
//step5
sqlSession.close();

So easy.

  • step1: 通过我们的配置文件,获取一个SqlSessionFactory
  • step2: 通过sqlSessionFactory获取一个sqlSession
  • step3: 通过sqlSession获取一个Mapper;
  • step4: 调用mapper的具体方法,执行对应的sql,获取数据
  • step5: 关闭session

你可能感兴趣的:(Mybatis (一)入门)