Mybatis学习笔记--SqlSessionFactory、SqlSession等

一、创建SqlSessionFactory

1、通过XML创建SqlSessionFactory

<?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>
---改代码片段由mybatis官方文档提供
注意:1)这里的dtd为config.dtd,应注意与mapper的dtd相区别 2)如果数据源的value是${}时在根路径下应存在一个后缀名为properties的文件,其中内容包括driver等连接数据库的信息并且在xml文件中引入properties文件

2、编程式创建SqlSessionFactory

DataSource dataSource = BlogDataSourceFactory.getBlogDataSource();
TransactionFactory transactionFactory = new JdbcTransactionFactory();
Environment environment = new Environment("development", transactionFactory,dataSource);
Configuration configuration = new Configuration(environment);
configuration.addMapper(BlogMapper.class);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);

--该代码片段出自mybatis官方文档

注意:在这个例子中configration加入了一个映射,这个映射是一个java类,它包括SQL映射的注解,以此来避免使用xml文件,由于java注解的局限性和mybaits映射的复杂性

xml对于一些高级映射仍然有存在的必要(如:join映射),因此,mybatis将自动查找并加载xml文件如果这个文件存在的话(在这个例子中,BlogMapper.xml 
将被加载,基于BlogMapper.接口)

二、SqlSession

创建好了SqlSessionFactory你就可以获得一个SqlSession实例。SqlSession包括每一个执行SQL 命令的方法,你可以通过SqlSession执行已映射的SQL语句。如下例

SqlSession session = sqlSessionFactory.openSession();
try {
Blog blog = session.selectOne("org.mybatis.example.BlogMapper.selectBlog", 101);
} finally {
session.close();
}

本例出自官方文档,这是mybatis之前的版本所使用的方法,现在有一个简单的方法,使用一个接口(例如,BlogMapper),这个方法描述了所给的statment的参数、返回值。如下例

SqlSession session = sqlSessionFactory.openSession();
try {
BlogMapper mapper = session.getMapper(BlogMapper.class);
Blog blog = mapper.selectBlog(101);
} finally {
session.close();
}
本例出自官方文档
三、SQL Statment

首先需要一个dtd为mapper.dtd的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">
select * from Blog where id = #{id}
</select>
</mapper>

在namespace中定义一个映射id='selectBlog' 你就可以调用全限定名为
org.mybatis.example.BlogMapper.selectBlog的映射语句如下例:
Blog blog = session.selectOne("org.mybatis.example.BlogMapper.selectBlog", 101);



但是有一个更好的方法如下

BlogMapper mapper = session.getMapper(BlogMapper.class);
Blog blog = mapper.selectBlog(101);
这种方法好在,第一不依赖于字符串的值,因此更安全,第二IDE有代码补全功能

三、作用域和生命周期

SqlSessionFactoryBulider的作用域最好是方法

SqlSessionFactory最好的作用域是应用中,即一个应用程序中只创建一个

SqlSession最好的作用于是请求或者方法,但是使用后记得释放资源

映射器实例(Mapper instances)最好的作用域是方法




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值