MyBatis学习笔记 - 第001天

MyBatis 入门

1.1 MyBatis 是什么?

MyBatis 是一个简化和实现了 Java 数据持久化层(persistence layer)的开源框架,它抽象了大量的 JDBC 冗余代码,并提供了一个简单易用的 API 和数据库交互。
  MyBatis 的前身是 iBATIS,iBATIS 于 2002 年由 Clinton Begin 创建。 MyBatis 3 是 iBATIS 的全新设计,支持注解和 Mapper。
MyBatis 流行的主要原因在于它的简单性和易使用性。在 Java 应用程序中,数据持久化层涉及到的工作有:将从数据库查询到的数据生成所需要的 Java 对象;将 Java 对象中的数据通过 SQL 持久化到数据库中。
  MyBatis 通过抽象底层的 JDBC 代码,自动化 SQL 结果集产生 Java 对象、 Java 对象的数据持久化数据库中的过程使得对 SQL 的使用变得容易。

1.2 为什么选择 MyBatis?

当前有很多 Java 实现的持久化框架,而 MyBatis 流行起来有以下原因:

  • 它消除了大量的 JDBC 冗余代码
  • 它有低的学习曲线
  • 它能很好地与传统数据库协同工作
  • 它可以接受 SQL 语句
  • 它提供了与 Spring 和 Guice 框架的集成支持
  • 它提供了与第三方缓存类库的集成支持
  • 它引入了更好的性能

1.3 MyBatis 安装和配置

1.3.1 新建 mybatis-config.xml配置文件

创建 MyBatis 的主要配置文件 mybatis-config.xml,其中包括数据库连接信息,类型别名等等,然后将其加
到 classpath 中;



  


    
         
           
    
    
  
    
      
      
        
        
        
        
      
    
  
  
  
    
  
  

1.3.2 映射器 UserDao.xml

创建 SQL 映射器 XML 配置文件 UserDao.xml 并且将它放在 com.kygo.mybatis.mappers 包中

 



    
        
        
        
        
        
    
    
    
    
    
        insert into tb_user value (default, #{username}, #{password}, #{email},
        #{gender}, #{nickname}, #{photo})
    
    
        delete from tb_user where username=#{username}
    
    
        update tb_user set email=#{email} where username=#{username}
    
 

1.3.3 新建 UserDao 接口

让我们创建一个 UserDao 接口,其定义的方法名和在 Mapper XML 配置文件定义的 SQL 映射语句名称相同;

public interface UserDao {
    
    public List findAll();
    
    public User findByUsername(String username);
    
    public void save(User user);
    
    public void deleteByUsername(String username);
    
    public void update(User user);
}

1.3.4 测试

    String resource = "mybatis-config.xml";
        InputStream in = Resources.getResourceAsStream(resource);
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(in);
        SqlSession session = sessionFactory.openSession();
        UserDao userDao = session.getMapper(UserDao.class);
        User user = userDao.findByUsername("admin");
        session.close();

1.3.5 它是怎么工作的

首先,我们配置了 MyBatis 最主要的配置文件-mybatis-config.xml,里面包含了 JDBC 连接参数;配置了映射器Mapper XML 配置文件文件,里面包含了 SQL 语句的映射。
  我们使用 mybatis-config.xml 内的信息创建了SqlSessionFactory 对象。每个数据库环境应该就一个SqlSessionFactory 对象实例,所以我们使用了单例模式只创建一个 SqlSessionFactory 实例。
  我们创建了一个映射器 Mapper 接口-UserDao,其定义的方法签名和在 UserDao.xml 中定义的完全
一样(即映射器 Mapper 接口中的方法名跟 UserDao.xml 中的 id 的值相同)。注意 UserDao.xml 中namespace 的值被设置成com.kygo.mybatis.dao.UserDao,是 UserDao 接口的完全限定名。这使我们可以使用接口来调用映射的 SQL 语句。
  在 StudenService.java 中,我们在每一个方法中创建了一个新的 SqlSession,并在方法功能完成后关闭SqlSession。每一个线程应该有它自己的 SqlSession 实例。 SqlSession 对象实例不是线程安全的,并且不被共享。所以 SqlSession 的作用域最好就是其所在方法的作用域。从 Web 应用程序角度上看,SqlSession 应该存在于 request 级别作用域上。

配置日志

新建 log4j.properties 文件,添加到 classpath 中

log4j.rootLogger=DEBUG, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d [%-5p] %c - %m%n

你可能感兴趣的:(MyBatis学习笔记 - 第001天)