zoukankan      html  css  js  c++  java
  • MyBatis 简单笔记

    本文仅简单介绍MyBatis,以官方为准,不涉及spring框架相关

    引入jar包

    通过导入mybatis-x.x.x.jar包来引入MyBatis,或者使用maven进行导入。

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

    核心类及其生命周期

    在MyBatis中,有SqlSessionFactoryBuilder,SqlSessionFactory,SqlSession,映射器实例类四个较为核心的类。

    1. SqlSessionFactoryBuilder Mybatis按照工厂模式进行核心对象的创建,那么也得先有一个工厂,这个类就是从xml配置文件或其他的文件流中获取配置信息,或者通过Resources类来从calsspath或其他地方来获取配置信息,来构造工厂类。该类在构造完工厂后就失去了作用。
    2. SqlSessionFactory MyBatis的核心类,是连接数据库和程序的桥梁,是一个数据库的连接池,应用可以从工厂中获取SqlSession使用,工厂的生命周期和程序的生命周期应一样长,且只有一个工厂对象,才能保证数据库资源不被无序占用。
    3. SqlSession 这是MyBatis的执行类,应用在执行数据库操作时,需向工厂类申请一个会话连接,在该会话中执行一系列数据库操作,然后结束会话。该类的普通对象是线程不安全且会占用连接资源的,该类应与应用中的一项操作的前后周期相对应,因此最好仅存在于一个方法中,随用随申请,并随一项操作的结束而关闭会话。可以使用try..catch..finally语句处理该类。
    4. SQLMapper映射器实例 这是绑定了SQL映射语句的接口,实际的数据操作对象。该对象从sqlSession对象中获得,因此其生命周期应小于SqlSession。
      如果使用MyBatis-Spring等框架,将mybatis对象的生命周期交由注入框架进行托管,那一般不用管这些类的生命周期,后顾之忧交给框架即可。

    基本参数配置

    XML方法

    仅使用MyBatis

    参考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="development"><!--一个配置中,可以定义多个环境,例如针对开发/测试/生产的不同配置-->
        <environment id="development"><!--具体的环境的配置-->
          <transactionManager type="JDBC"/><!--事物管理引擎配置-->
          <dataSource type="POOLED"><!--数据源配置,数据库池类型-->
            <property name="driver" value="${driver}"/><!--数据库驱动-->
            <property name="url" value="${url}"/>
            <property name="username" value="${username}"/>
            <property name="password" value="${password}"/>
          </dataSource>
        </environment>
      </environments>
      <mappers>
        <mapper resource="org/mybatis/example/BlogMapper.xml"/><!--数据库接口定义XML-->
      </mappers>
    </configuration>
    

    数据库接口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="org.mybatis.example.BlogMapper"><!--数据库接口映射,以及命名空间声明-->
      <select id="selectBlog" resultType="Blog"><!--数据库查询语句设置,设置ID还有返回类型-->
        select * from Blog where id = #{id}<!--SQL语句,使用#{}进行参数填充,可以为具体的名称或者是变量输入顺序-->
      </select>
    </mapper>
    

    XML解析及对象创建代码

    String resource = "org/mybatis/example/mybatis-config.xml";#设置XML文件路径
    InputStream inputStream = Resources.getResourceAsStream(resource);#通过Resources类解析XML类参数
    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);#创建工厂类
    

    使用Spring框架进行注入

    典型的使用Spring框架对MyBatis进行管理的配置文件

    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <!--datasource定义-->
          <property name="driverClassName"> <!--驱动-->
              <value>com.mysql.jdbc.Driver</value> 
          </property> 
          <property name="url"> <!--数据库地址-->
              <value>jdbc:mysql://localhost:3306/how2java?characterEncoding=UTF-8</value> 
          </property> 
          <property name="username"> <!--数据库用户信息-->
              <value>root</value> 
          </property> 
          <property name="password"> 
              <value>admin</value> 
          </property>    
        </bean>
        <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><!--将会话工厂托管给Spring-->
            <property name="typeAliasesPackage" value="com.how2java.pojo" />
            <property name="dataSource" ref="dataSource"/>
            <property name="mapperLocations" value="classpath:com/how2java/mapper/*.xml"/><!--XML文件位置-->
        </bean>
     
        <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
            <property name="basePackage" value="com.how2java.mapper"/><!--自动扫描mapper-->
            <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/><!--指定数据源所在的bean-->
        </bean>
    

    代码构建方法

    如下列示例代码:

    DataSource dataSource = BlogDataSourceFactory.getBlogDataSource();#获取数据源,例如数据库驱动、url和用户名密码之类
    TransactionFactory transactionFactory = new JdbcTransactionFactory();#获取jdbc事物工厂对象
    Environment environment = new Environment("development", transactionFactory, dataSource);#创建Mybatis命名空间
    Configuration configuration = new Configuration(environment);#将命名空间加入配置类中
    configuration.addMapper(BlogMapper.class);#在配置类中添加数据库映射
    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);#使用配置文件构建工厂类
    

    与数据库进行交互

    不使用Spring等框架进行注入,手动操作

    //定义 SqlSession
    SqlSession sqlSession = null;
    try {
        // 打开 SqlSession 会话
        sqlSession = SqlSessionFactory.openSession();
        // some code...
        sqlSession.commit();    // 提交事务
    } catch (IOException e) {
        sqlSession.rollback();  // 回滚事务
    }finally{
        // 在 finally 语句中确保资源被顺利关闭
        if(sqlSession != null){
            sqlSession.close();
        }
    }
    

    使用Spring框架进行注入与对象管理

    使用@Autowired注解,对Mapper对象进行自动装配,然后即可调用Mapper的方法。

    @Autowired
    private SQLMapper SQLMapper;
    
    
  • 相关阅读:
    准备学习FLEX目前心理状态篇
    Jeffrey Richter 大师 ,这次交流收获不少。
    Scrum框架 转贴
    换工作中......
    以后多参加些论坛,交流交流思想。
    机会在哪?
    2011年要比2010年更加努力!!!
    2012,处理考验我的一年,2013,继续学习快速成长的一年
    终于买了iPad,激动。。。。
    CSP认证
  • 原文地址:https://www.cnblogs.com/CoveredWithDust/p/MyBatis_Start.html
Copyright © 2011-2022 走看看