• myBatis


    ORM:Object(javaBean) Relation(和数据库记录的关系) Mapping(javaBean和数据库记录的映射)

        对象关系映射,Hibernate把ORM用的淋漓尽致。

    Hibernate:
     
              @Table("person")
              Person{
                   String lastName;
                   int age;
              }
     
              save(new Person()); 
     
              get(1);
               update();         
    缺点:ORM(反模式);
              1、sql框架自动生成的;无法优化;
              2、全映射框架;     select lastName from person where id=1;
                                            select * from person where id=1 ;
              3、HQL:
    能写原生sql;
         获取连接---->创建PreparedStatement---->预编译sql---->执行sql--->封装结果4
    Hibernate;
         JavaBean---------------------------------------------------------------->数据表
    MyBatis;
            只需要编写sql;queryRunner   queryForObject( new BeanPropertyMapper<>())
          获取连接---->创建PreparedStatement---->预编译sql---->执行sql--->封装结果
    给配置文件里面写好sql即可;
     
    MyBatis:
              轻量级;导包少;MyBatis.jar;

    MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。

    安装

    要使用 MyBatis, 只需将 mybatis-x.x.x.jar 文件置于 classpath 中即可。

    如果使用 Maven 来构建项目,则需将下面的 dependency 代码置于 pom.xml 文件中:

    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>x.x.x</version>
    </dependency>

    从 XML 中构建 SqlSessionFactory

    每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为中心的。SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得。而 SqlSessionFactoryBuilder 则可以从 XML 配置文件或一个预先定制的 Configuration 的实例构建出 SqlSessionFactory 的实例。

    0、搭建数据库的基础环境;创建一些表;
    建表;HelloWorld使用tbl_student表测试;
     
     
     
     
    1、导包
    MyBatis框架在关键位置特别是发sql语句的时候都有日志记录;导入日志包才能看;
    Log4j:能用依赖自己的一个配置文件。文件名就叫log4j.xml;必须放在类路径下;
     
     
     
    2、写配置
              1)、mybatis的全局配置文件;指导mybatis框架正确运行的文件;比如数据库连接池(mybatis内置连接池)配置
              2)、StudentDao接口的实现描述文件(sql映射文件)(StudentDao.xml);配置这dao的哪个方法执行哪个sql语句;相当于是dao的实现
              3)、一定要在全局配置文件中注册接口的实现文件(eg:StudentDao.xml)
     
    3、测试
    @Test
        public void test() throws IOException {
    
            //1、根据全局配置文件获取一个SqlSessionFactory对象;
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    
            //2、SqlSessionFactory;用它来创建sqlSession;
            //开启一次和数据库的会话;默认这个会话是非自动提交的;
            SqlSession openSession = sqlSessionFactory.openSession(true);
    
            //3、SqlSession;sql会话;相当于是connection;和数据库建立一次会话(连接)
            StudentDao studentDao = openSession.getMapper(StudentDao.class);
            Student student = new Student(null, "张三admin", 19, 98.98, new Date());
            studentDao.saveStudent(student);
    
            //4、保存成功!
        //  openSession.commit();
    
        }

    总结实现过程:

    0、创建库创建表;运行mybatis_test.sql文件
         把javaBean和操作数据的Dao接口创建出来;
    1、导包;导入mybatis.jar,数据库驱动,日志包(log4j);
    2、写配置:
              1)、复制粘贴log4j.xml到类路径下即可;
              2)、MyBatis的全局配置文件;(注意配置数据源信息)
              3)、Dao接口的实现文件(sql映射文件);复制粘贴官方文档;
              4)、一定要把dao接口的实现文件注册到全局配置文件中;
    3、测试:
            复制粘贴:
              1)、根据全局配置文件创建一个SqlSessionFactory
              2)、调用SqlSessionFactory.openSession()创建一个sqlSession对象。开启和数据库的一次会话
              3)、通过sqlSession.getMapper(接口类)获取这个接口的映射器;
              4)、调用接口的方法测试;
              5)、注意:默认sqlSession是不自动提交,测试增删改需要注意;
              6)、一定关闭SqlSession
    dtd是约束xml文档中都能写什么标签;
    如果这个文件能找到写xml就有提示;
    eclipse写mybatis配置文件有提示;
    引入mybatis的dtd约束;
     

    1、复制dtd约束的url地址
     
    2、按照以下步骤
     

     
    注意:
         1)、配置文件的作用;
                   全局配置文件:mybatis-config.xml;作用:指导mybatis如何正确运行;
                   SQL映射文件:将接口的方法和文件里面sql进行绑定;对接口的实现;
         2)、两个类;
                   SqlSessionFactory:SqlSession工厂;需要根据全局配置文件得到工厂;
                   SqlSession:从SqlSession工厂中获取SqlSession对象;
                                       一个SqlSession代表和数据库的一次会话;线程不安全,我们需要及时释放资源;
         3)、一个原理;
                   我们通过SqlSession对象获取到Dao接口的实现类对象;
                   对象是org.apache.ibatis.binding.MapperProxy@1794d431===》         
                                  class com.sun.proxy.$Proxy2
        
     MyBatis会为每个绑定了配置文件的接口,创建一个代理对象;接口执行方法执行的是代理对象的方法;

     4)、一个不常用的场景;
                   我们可以没有dao接口,直接调用sqlSession的原生API;
                   最低配置;
     
      原生mybatis模式;不推荐;
    //使用sql语句的唯一标示调用
    openSession.insert("com.atguigu.dao.StudentDao.saveStudent", student);
              接口式编程(推荐);接口->解耦;BookDao bookDao;
                   BookService{
                            @Autowired
                            BookDao bookDao; 
                   }
                        
     
     
     
  • 相关阅读:
    asp.net mvc 项目架构解析
    新手如何发网站外链,网站的外链如何发,发外链的方法集合
    win2008r2的iis7.5手动建站方法,iis7.5中用独立用户建立网站的方法,提高网站安全性
    ex:Could not load file or assembly 'System.Web.Helpers, Version=2.0.0.0, Culture=neutral, . 系统找不到指定的文件。
    微信开放平台---网站应用开发---微信登录功能 简介
    如何使用ILSpy 把发布版本反编译成源码
    沐雪多用户微信公众平台开发源码,商城小程序源码(2018年最新的asp.net C# 微信源码,小程序源码)
    2015淘宝最新排名新规则
    群主微信sdk说明地址
    Quantization Method
  • 原文地址:https://www.cnblogs.com/limingxian537423/p/7173528.html
Copyright © 2020-2023  润新知