zoukankan      html  css  js  c++  java
  • Mybatis系列(一):mybatis的入门

    Mybatis是一款优秀的持久层框架,它支持自定义sql,存储过程以及高级映射,几乎不需要任何的JDBC代码以及设置参数和获取结果集的工作。接下来看一下Mybatis的基本使用。

    String resource = "org/mybatis/example/mybatis-config.xml";
    InputStream inputStream = Resources.getResourceAsStream(resource);
    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);   //构建sqlSessionFactory
    
    //获取session,及映射器实例
    try (SqlSession session = sqlSessionFactory.openSession()) {                        //这是标准获取sqlsession和映射器实例的方式
      BlogMapper mapper = session.getMapper(BlogMapper.class);
      Blog blog = mapper.selectBlog(101);
    }

    配置文件:全局配置文件和sql映射文件

    全局配置文件:
    <?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"/> </mappers> </configuration>
    sql映射文件:
    <?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"> select * from Blog where id = #{id} </select> </mapper>

    作用域和生命周期

    对象生命周期:依赖注入框架可以创建线程安全的,基于事务的sqlsession和映射器,并将它们直接注入到bean中,因此可以忽略他们的生命周期。

    SqlSessionFactoryBuilder实例:一旦创建了SqlsessionFactory就不再需要他了,所以他的最佳作用域是方法域。

    SqlSessionFactory实例:一旦被创建就应该在应用的运行期间一直存在,没有任何理由丢弃它,使用sqlSessionFactory的最佳实践是在应用期间不应该重复创建多次,所以SqlSessionFactory的最佳作用域是应用作用域,最简单的模式就是单实例或静态单例模式。

    SqlSession实例:每个线程都应该有他自己的sqlSession实例。sqlSession实例不是线程安全的,所以不能被共享,它的最佳作用域是请求或方法作用域。下面就是确保sqlSession关闭的标准模式

    try (SqlSession session = sqlSessionFactory.openSession()) {
      // 你的应用逻辑代码
    }

    映射器实例:它是绑定一些映射语句接口的。映射器接口的实例是从SqlSession中获得的,任何映射器实例的最大作用域应该与请求他们的SqlSession相同。但是方法域才是映射器实例最合适的作用域。如果在整个请求域保留映射器实例也不会有什么问题,但是管理那么多的像SqlSession的资源会让你忙不过来。最好就是下面的使用方式:

    try (SqlSession session = sqlSessionFactory.openSession()) {
      BlogMapper mapper = session.getMapper(BlogMapper.class);
      // 你的应用逻辑代码
    }

    参考mybatis中文文档:https://mybatis.org/mybatis-3/zh/getting-started.html

  • 相关阅读:
    OFBiz中services调用机制
    OFBiz中JOB的运行机制
    ofbiz中运行配置及流程
    ofbiz框架学习
    在java学习中的思考
    在更新操作中所需要注意的事项
    级联删除
    关于整合hibernate4和spring3的相关注意事项
    常见系统中文字体的英文名
    flash Socket 连接 以及 跨域策略文件crossdomain.xml配置详解
  • 原文地址:https://www.cnblogs.com/amazing-eight/p/13276734.html
Copyright © 2011-2022 走看看