MyBatis学习笔记(一)初识MyBatis_接口式编程

MyBatis学习笔记(一)初识MyBatis_接口式编程
文章目录

  • MyBatis学习笔记(一)初识MyBatis_接口式编程
    • MyBatis与hibernate的区别
      • Hibernate
        • 优点
        • 缺点
      • MyBatis
        • 优点
    • MyBatis的下载及使用
    • 接口式编程
      • 示例
      • 小结

MyBatis与hibernate的区别 Hibernate
优点
  1. 全自动全映射(ORM)框架
  2. 旨在消除sql,不懂sql也可以使用
缺点
  1. 全自动生成sql,不能自行优化sql
    • 如果想要优化,还需要学习HQL语句
  2. 全映射,造成资源浪费
  3. 硬编码,高耦合
MyBatis
优点
  1. 半自动,轻量级
  2. SQL与java代码分离,SQL是开放人员控制的
MyBatis的下载及使用
  • Mybatis下载地址
    • 下载2个文件,一个是Mybatis的核心文件,一个是Mybatis的源代码
    • 下载完成之后,将Mybatis的核心文件解压,用的时候只需要把 核心jar包导入到项目即可
    • 需要查看Mybatis的源代码时,导入下载的压缩包即可,无需解压
  • MAVEN 方式导入
org.mybatis mybatis 3.4.6

接口式编程
  • 接口式编程和之前的方法一样,区别在于把接口与配置文件进行动态绑定
  • 接口与配置文件进行动态绑定
    • namespace: 空间名称: 指定为接口的全类名
    • id:唯一标识: 指定为接口的方法名
示例
  • EmployeeMapper.java
    public interface EmployeeMapper { // 根据id查询对象 Employee getEmpById(Integer id); }

    • 创建了一个接口
  • EmployeeMapper.xml
    id="getEmpById" resultType="com.fu.bean.Employee"> select id,last_name lastName,gender,email from tbl_employee where id = #{id}

  • 测试类
    • 关于 mybatis-config.xml 的创建与配置,请参见MyBatis学习笔记(二)全局配置文件 mybatis-config.xml详解
    public SqlSessionFactory getSqlSessionFactory(){ String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); } //. 我们需要手动提交数据 //getSqlSessionFactory().openSession(); ==》手动提交 //getSqlSessionFactory().openSession(true); ==》自动提交 @Test public void demo2() throws IOException { SqlSession session = getSqlSessionFactory().openSession(); try { // 获取接口的实现类对象 // 只要是动态编程,MyBatis会自动为接口创建一个代理对象,由代理对象执行增删改查 EmployeeMapper mapper = session.getMapper(EmployeeMapper.class); Employee employee = mapper.getEmpById(1); System.out.println(mapper.getClass()); System.out.println(employee); session.commit(); } finally { session.close(); } }

小结
  1. 【MyBatis学习笔记(一)初识MyBatis_接口式编程】接口式编程
    原生:DAO===》 DaoImpl MyBatis:Mapper ===》 xxMapper.xml

  2. SqlSession 代表和数据库的一次会话:用完必须关闭
  3. SqlSession 和 Connection 一样,都是非线程安全的,所以每次使用的时候,都应该去获取一个新的对象,不能把SqlSession放到成员变量里
  4. mapper接口没有实现类,但是MyBatis会为接口生成一个代理对象。
    • 前提是 将接口和xml进行绑定
  5. 两个重要的配置文件:
    1. mybatis 的全局配置文件:包含数据库连接池信息,事务管理器等。。。系统运行环境信息
    2. sql映射文件:保存了每一条sql语句的映射信息

    推荐阅读