另一个ORM——MyBatis(二)

         上篇博客介绍了mybatis,和一个简单的程序。这篇博客将介绍mybatis如何工作的。

         一、首先,先看一下结构图:


        首先,项目启动的时候读取SqlMapConfig.xml。这个全局配置文件中配置了映射文件,例如User.xml或者之后的UserMapper.xml,SqlSessionFactoryBuilder会根据这个配置创建SqlSessionFactory,顾名思义,factory是用来生产SqlSession的,SqlSession这个类就是用来和数据库打交道的。

SqlSessionFactoryBuilder类可以被实例化、使用和丢弃,一旦创建了 SqlSessionFactory,就不再需要它了。所以SqlSessionFactoryBuilder 实例的最佳范围是方法范围(也就是局部方法变量)。

SqlSessionFactory 一旦被创建就应该在应用的运行期间一直存在,没有任何理由对它进行清除或重建。因此SqlSessionFactory最佳范围是应用范围,所以考虑使用单例模式。

每个线程都应该有它自己的 SqlSession 实例。SqlSession 的实例不是线程安全的,因此是不能被共享的,所以它的最佳范围是请求或者方法范围,在web开发中,应该放到和一次http请求相同的范围内,一次请求对应一个SqlSeesion,响应之后就关闭它。

二、再看一下映射配置文件(User.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="test">  
      
    <select id="findUserById" parameterType="int" resultType="com.tgb.mybatis.po.User">  
        select * from user where userid=#{id}  
    </select>  
</mapper> 
    首先,有一个根标签,mapper,里面定义了这个mapper有哪些方法等等,在实际开发中,该配置文件就相当于dao层的编写。之后会详细介绍该配置文件更深层次的应用。
mapper标签有个属性namespace,这个唯一标识了该mapper,如果要调用该mapper的findUserById()方法,则可以这样调用:sqlSession.selectOne("test.findUserById", 1); 
    select标签表示了一个查询sql,当然还有insert标签、update标签、delete标签。id唯一标识了该查询方法,parameterType是指定了输入参数的类型,这里指定了int类型。resultType指定了单条记录所映射的Java对象类型。当然,还有其他的属性,例如resultMap等,这个之后会讲。
    再看sql语句,#{id},#{}是一个占位符,和jdbc中的?类似。其中id表示传入参数,参数名称就是id,如果输入参数是简单类型,#{}中的参数名可以任意。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值