zoukankan      html  css  js  c++  java
  • ##框架-Mybatis

    《!--框架--》

    今天要给大家分享mybatis框架的入门,但是在这之前需要大家了解下什么是框架

    ##一,什么是框架?

      *1,框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;另一种定义认为,框架是可被应用开发者定制的应用骨架。简而言之,框架其实就是一个半成品,需要我们去加工区实现我们想要的结果。
      *2,说到框架,不得不说下它在我们开发过程中,需要用到分层,为什么呢?
        框架的重要性在于它实现了部分功能,并且能够很好的将低层应用平台和高层业务逻辑进行了缓和。为了实现软件工程中的“高内聚、低耦合”。把问题划分开来各个解决,易于控制,易于延展,易于分配资源。我们常见的MVC 软件设计思想就是很好的分层思想。
    ##二,那么我们开发过程中是否只需要一个Mybatis框架就可以呢?
      常见的 JavaEE 开发框架:
        1、解决数据的持久化问题的框架
          
              作为持久层的框架,还有一个封装程度更高的框架就是Hibernate,但这个框架因为各种原因目前在国内的流行程度下降太多,现在公司开发也越来越少使用。目前使用 Spring Data 来实现数据持久化也是一种趋势。
        2、解决 WEB 层问题的 MVC 框架
            
           3、解决技术整合问题的框架
              
    ##三,Mybatis的概述:
      mybatis 是一个优秀的基于 java 的持久层框架,它内部封装了 jdbc,使开发者只需要关注 sql 语句本身,而不需要花费精力去处理加载驱动、创建连接、创建 statement 等繁杂的过程。
      mybatis 通过 xml 或注解的方式将要执行的各种 statement 配置起来,并通过 java 对象和 statement 中sql 的动态参数进行映射生成最终执行的 sql 语句,最后由 mybatis 框架执行 sql 并将结果映射为 java 对象并返回。
      采用 ORM 思想解决了实体和数据库映射的问题,对 jdbc 进行了封装,屏蔽了 jdbc api 底层访问细节,使我们不用与 jdbc api 打交道,就可以完成对数据库的持久化操作。 
      *1,在原来我们可以使用jdbc原生态的写法,但是存在的一些问题:
          1、数据库链接创建、释放频繁造成系统资源浪费从而影响系统性能,如果使用数据库链接池可解决此问题。
        2、Sql 语句在代码中硬编码,造成代码不易维护,实际应用 sql 变化的可能较大,sql 变动需要改变 java代码。
        3、使用 preparedStatement 向占有位符号传参数存在硬编码,因为 sql 语句的 where 条件不一定,可能多也可能少,修改 sql 还要修改代码,系统不易维护。
        4、对结果集解析存在硬编码(查询列名),sql 变化导致解析代码变化,系统不易维护,如果能将数据库记录封装成 pojo 对象解析比较方便。
    ##四,Mbatis入门:
      1,官网下载 Mybatis 框架
      2,创建maven项目,要知道我们以后用的框架都是在maven下操作的
      3,添加我们的jar包坐标,也就是改写我们的pom.xml文件
      <dependencies>
            <!--mybatis-->
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>3.4.5</version>
            </dependency>
            <!--mysql-->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.26</version>
            </dependency>
            <!--日志选用log4j-->
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>1.2.12</version>
            </dependency>
            <!--单元测试-->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.10</version>
            </dependency>
        </dependencies>

      4,编写我们的实体类

        这一步比较简单,不做演示

      5,编写 SqlMapConfig.xml 配置文件
    <?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">
    <configuration>
        <!--配置环境-->
        <environments default="mysql">
            <!--配置mysql的环境-->
            <environment id="mysql">
                <!--配置事务的使用类型-->
                <transactionManager type="JDBC"></transactionManager>
                <!--配置数据源,也叫连接池-->
                <dataSource type="POOLED">
                    <property name="driver" value="com.mysql.jdbc.Driver"/>
                    <property name="url" value="jdbc:mysql:/localhost:3306/数据库名"/>
                    <property name="username" value="root"/>
                    <property name="password" value="root"/>
                </dataSource>
            </environment>
        </environments>
        <!--指定映射配置文件的位置,映射文件指的是每个独立的配置文件-->
        <mappers>
            <mapper resource="com/kgc/mapper/UserMapper.xml"/>
        </mappers>
    </configuration>
      6,编写,映射文件 userMapper.xml 
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE mapper
            PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <!--上面的是头部,我们不需要动,下面写我们需要的东西--> <mapper namespace="一个名称"> <select id="方法名" resultType="com.kgc.domain.User">//resultTpye值的是最后返回的数据类型 select * from user//sql语句 </select> </mapper>

      7,编写我们test测试类

      @Test
        public void testFindALL(){
            //  获取配置文件的输入流对象
            InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("SqlMapConfig.xml");
            // 创建SqlSessionFactoryBuilder 对象
            SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
            //创建SqlSessionFactory对象
            SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream);
            // 获取sqlSession对象
            SqlSession sqlSession = sqlSessionFactory.openSession();
            List list = sqlSession.selectList("名称.方法名");
            // 遍历结果
            for(Object o:list){
                System.out.println(o);
            }
         //释放资源 sqlSession.close();
       }
  • 相关阅读:
    在win2003中发布部署vs2010b2写的mvc2网站
    安装blender2.5Alpha0
    Win7下虚拟机个人使用小结:Virtual PC,VMware和VirtualBox
    ASP.NET AJAX Control Toolkit Beta 0911 发布[再增两控件]
    Camtasia 6录屏时鼠标闪烁问题解决
    为XNA制做安装程序(四)WIX Toolset 3.0 for Visual Studio 2008
    Oracle EM 12c
    无题
    从徐汇到虹口
    近况
  • 原文地址:https://www.cnblogs.com/liurui-bk517/p/11291067.html
Copyright © 2011-2022 走看看