mybatis基础知识一览

Mybatis

 

注:PojoPlain Old Java Object,普通的Java对象)

 

1. Mybatishibernate的简单对比:

    (1) 易学:mybatissql就能搭建框架并使用,而hibernate7种查询搭建框架;

    (2) sql查询:mybatis只支持一种xml查询,而hibernate提供了hql,sqlnamingSQL三种类查询;

    (3) 灵活度:mybatissql更灵活,对sql的修改、优化比较方便;(适用于需求变化比较多的情况->互联网项目);而hibernate中的sql自动生成,适用于需求变化不多的中小型项目

    (4) 封装性:mybatis是对JDBC的简单封装(不完全封装),hibernate是完全封装(切入点是面向对象,加一层对象映射)。

    (5) 性能:

        ① 运行效率:mybatis优于hibernate(类似C语言和Java语言的对比)

        ② 开发效率:hibernate优于mybatis,省略了一些写sql和测试sql的时间。

 

2. mybatis相对于原生态jdbc

    (1) 能够设置数据库连接池管理数据库连接

    而JDBC数据库连接时,频繁需要关闭开启,造成资源浪费,影响性能。

    (2) 能够将sql语句配置在xml中;

    而JDBC是将sql语句硬编码到java语言中,若修改,需要重新编译,不易维护。

    (3) 能够将查询结果自动映射成java对象;(输入映射和输出映射)

    而JDBC存在硬编码,不利于维护。

    (4) 将技术细节封装,关注点在CRUD层面上。

 

3. mybatis基本概念:

    (1) mybatis支持sql存储过程高级映射的优秀的持久层框架;避免了JDBC代码手动设置参数获取结果集mybatis可以使用简单的xml和配置,从而将接口和Pojos映射成数据库中的记录。

    (2) 着力点:POJOSQL之间的映射关系。

 

4. mybatis框架:(从上往下)

    (1) Config.xml:全局配置文件(包括mybatis运行环境、数据源和事物管理等);

    (2) SqlSessionFactory(会话工厂):创建sqlSession

    (3) sqlSession(会话):一个接口,用来操作数据库(增、删、改、查,CRUD);

    (4) executor(执行器):一个接口,SqlSession内部通过执行器操作数据库;

    (5) Mapped Statement(底层封装对象):对操作数据库存储封装,包括 sql语句,输入参数、输出结果类型。

    (6) mysql

 

5. 简单入手:

    (1) 建立java web项目;

    (2) 导入jar包:

        ① mybatis需要jar包:mybatis-3.3.0.jar

        ② mysql驱动jar包:mysql-connection-java-....jar

        ③ 日志记录包:log4j.jar知道mybatis执行了什么样的SQL语句

    (3) 创建数据库数据:category_

    (4) xml配置文件config.xml

        高层结构:

         Configuration配置

             properties属性 (“resource”引入外部控制文件)

            settings设置

            typeAliases类型命名

            typeHandlers类型处理器

            objectFactory对象工厂

            plugins插件

            environments环境 (配置环境)

                environment环境变量

                    transactionManager事务管理器 (“type”使用JDBC管理)

                    dataSource数据源

                    (提供数据库用的驱动,名称、编码方式和账号密码)

                    type=”POOLED”:支持JDBC数据源连接池;

                    type=”UNPOOLED”:不支持数据源连接池;

                    type=”JNDI”:支持外部数据源连接池

            映射器 (映射category.xml

    (5) 创建对应实体类category.java):用于映射表category_

    (6) 创建映射文件(category.xml,在该文件中添加sql语句)

    (也可定义CRUD

        <mapper namespace=”pojo”>

            <select id=”listCategory” resultType=”category”>

                Select * from category_

            </select>

        </mapper>

    (7) 最后定义mainmain.java

        ① 根据配置文件config.xml得到sqlSessionFactory

            String resource = “config.xml”;

            InputStream is = Resourses.getResourse(resource);

            SqlSessionFactory ssf = new SqlSessionFactoryBuilder.build(is);

        ② 得到session

            sqlSession session = sqlSessionFactory.openSession();

        ③ 遍历得到category集合:

            List<category> cs = session.selectList(“listCategory”);

            for(category c: cs){}

 

6. 基本原理图:

    (1) 应用程序mybatis要数据;

    (2) mybatis从数据库找数据:

        ① 定位到那个数据库(config.xml

        ② 执行sql语句(category.xml

        ③ 将返回的数据库记录封装在category对象中;

        ④ 把多个装在一个category集合中;

    (3) 返回该集合

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值