框架--Mybatis--介绍

分手后的思念是犯贱 2021-09-28 02:52 566阅读 0赞

Mybatis框架介绍

  • MyBatis框架介绍
  • MyBatis下载
  • Mybatis开发流程
    • 流程
    • 举例
  • 总结

MyBatis框架介绍

  1. mybatisApache软件基金会下的一个开源项目,前身是ibatis框架。2010年这个项目由apache 软件基金会迁移到google code下,改名为mybatis201311月又迁移到了github([https://github.com/mybatis/mybatis-3/releases)。][https_github.com_mybatis_mybatis-3_releases]
  2. mybatis是一个持久层的框架,是对JDBC操作数据库的封装,使开发者只需要关注业务本身,不需要花费精力去处理加载驱动、创建数据库连接对象、创建statement语句对象、参数设置、结果集处理等一系列繁杂的过程代码。
  3. mybatis通过xml或注解进行配置,将java对象与sql语句中的参数自动映射生成最终执行的sql语句,并将sql语句执行结果自动映射成java对象,返回给业务层(service)应用。

三句话概括上面内容:

  1. mybatis早期版本叫做ibatis,目前代码托管在github,大家可以在此下载。
  2. mybatis是对jdbc的封装,是一个持久层的框架。
  3. mybatis是通过xml或者注解进行配置,实现java对象与sql语句的对应关系(映射)。

MyBatis下载

  1. 度娘
    在这里插入图片描述
  2. 点击
    在这里插入图片描述
  3. 找到下载
    在这里插入图片描述
  4. 下载(点击后链接到github)
    在这里插入图片描述

Mybatis开发流程

流程

  1. 数据库环境准备
  2. 添加依赖
  3. SqlMapConfig.xml 主配置
  4. 实体类(User.java)
  5. 接口(IUserDao.java)
  6. 接口映射(IUserDao.xml)
  7. 在SqlMapConfig.xml中,加载IUserDao.xml
  8. 编写测试代码

举例

  1. 需求:查询全部用户列表
  2. 数据库环境配置:

    — 1.创建数据库
    CREATE DATABASE mybatis DEFAULT CHARACTER SET utf8;

    — 2.创建用户表
    DROP TABLE IF EXISTS USER;

    CREATE TABLE USER (
    id INT(11) NOT NULL AUTO_INCREMENT,
    username VARCHAR(32) NOT NULL COMMENT ‘用户名称’,
    birthday DATETIME DEFAULT NULL COMMENT ‘生日’,
    sex CHAR(1) DEFAULT NULL COMMENT ‘性别’,
    address VARCHAR(256) DEFAULT NULL COMMENT ‘地址’,
    PRIMARY KEY (id)
    ) ENGINE=INNODB DEFAULT CHARSET=utf8;

  1. INSERT INTO USER(id,username,birthday,sex,address) VALUES
  2. (41,'老王','2018-02-27 17:47:08','男','北京'),(42,'小二王','2018-03-02 15:09:37','女','北京金燕龙'),
  3. (43,'小二王','2018-03-04 11:34:34','女','北京金燕龙'),
  4. (45,'传智播客','2018-03-04 12:04:06','男','北京金燕龙'),
  5. (46,'老王','2018-03-07 17:37:26','男','北京'),
  6. (48,'小马宝莉','2018-03-08 11:44:00','女','北京修正');
  7. SELECT * FROM USER;
  1. 创建项目,添加依赖

    <?xml version=”1.0” encoding=”UTF-8”?>


    4.0.0

    com.luojun
    mybatis01_01_hello
    1.0-SNAPSHOT




    org.mybatis
    mybatis
    3.4.5



    mysql
    mysql-connector-java
    5.1.30



    log4j
    log4j
    1.2.17


  2. SqlMapConfig.xml 主配置

    1. 配置内容:

      1. 数据库连接配置
      2. 数据库连接池、事务管理
      3. 加载接口的映射
    2. 参考约束文件:
      在这里插入图片描述
    3. 配置实现
      在这里插入图片描述

    <?xml version=”1.0” encoding=”UTF-8”?>
    <!DOCTYPE configuration PUBLIC “-//mybatis.org//DTD Config 3.0//EN” “http://mybatis.org/dtd/mybatis-3-config.dtd">












    ///mybatis?characterEncoding=utf8">





  3. 实体类

    public class User {

    1. private int id;
    2. private String username;
    3. private Date birthday;
    4. private String sex;
    5. private String address;// 省略get set

    }

    / 省去getter和setter的方法 /

  4. dao接口

    /* 数据访问接口 */
    public interface IUserDao {

    1. /** * 查询查询 */
    2. List<User> findAll();

    }

  5. dao接口映射(XML)

    1. 写一个映射文件:IUserDao.xml
    2. 在哪个目录定义上面的文件?(可以随意,但通常映射文件与接口保持在同一目录)

      1. 新建目录:
        在这里插入图片描述
      2. 再新建文件
        在这里插入图片描述
      3. IUserDao.xml文件内容

    <?xml version=”1.0” encoding=”UTF-8”?>
    <!DOCTYPE mapper

    1. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    2. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">






  6. 加载接口映射文件
    在这里插入图片描述

  7. 测试

    package com.luojun.dao;

    import com.luojun.entity.User;
    import org.apache.ibatis.io.Resources;
    import org.apache.ibatis.session.SqlSession;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.apache.ibatis.session.SqlSessionFactoryBuilder;

    import java.io.IOException;
    import java.io.InputStream;
    import java.util.List;

    /* 运行mybatis入门案例 */
    public class UserDaoTest {

    1. public static void main(String[] args) throws Exception {
    2. // 1. 获取文件流
    3. InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
    4. // 2. 创建工厂的构建器
    5. SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
    6. // 3. 创建SqlSession的工厂
    7. SqlSessionFactory factory = builder.build(in);
    8. // 3. 创建SqlSession
    9. SqlSession session = factory.openSession();
    10. // 4. 创建接口的代理对象
    11. IUserDao userDao = session.getMapper(IUserDao.class);
    12. // 查看是否是代理对象?
    13. System.out.println(userDao.getClass());
    14. // 5. 调用方法
    15. List<User> list = userDao.findAll();
    16. System.out.println(list);
    17. // 6. 关闭,释放资源
    18. session.close();
    19. in.close();
    20. }

    }

  8. 测试结果
    在这里插入图片描述
    缺少日志文件。所以,引入日志文件:log4j.properties
    在这里插入图片描述
    再运行:
    在这里插入图片描述

总结

  1. 需要主配置加载接口映射文件路径:



  2. 映射文件的namespace对应接口路径

  3. select中的id对应IUserDao中的方法名称

    public interface IUserDao{

    1. List<User> findAll();

    }



  4. UserDao也可以叫做UserMapper,这些都是常用的叫法。

发表评论

表情:
评论列表 (有 0 条评论,566人围观)

还没有评论,来说两句吧...

相关阅读