发表于: 2017-05-10 12:00:58
1 1344
昨天所做:
http://www.mybatis.org/mybatis-3/zh/statement-builders.html
使用mybatis配置文件配置数据库。于是学mybits。理解了一点,还要把代码自己多敲敲。
-----------------------笔记---------------------------
Mybatis项目结构:
1.mybatis配置文件。
我的理解是这个配置文件中设置了连接数据库的数据(数据库连接地址,登录账号和密码)。还有一些其它java 类的地址
2.Mapper xml文件。里面是sql 映射文件
DBTools:
从xml文件构建SessionFactory 实例
InputStream输入流或者Reader Resourse工具类加载资源文件
String resource = "org/mybatis/example/mybatis-config.xml";
InputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
从SqlSessionFactory 获取SqlSession 的实例
SqlSession session = sqlSessionFactory.openSession();
try {
BlogMapper mapper = session.getMapper(BlogMapper.class);
Blog blog = mapper.selectBlog(101);
} finally
{ session.close()
}
SqlSessionFactoryBuilder一旦创建了 SqlSessionFactory就不再需要。因此 SqlSessionFactoryBuilder 实例的最佳作用域是方法作用域(也就是局部方法变量)。
SqlSessionFactory 一旦被创建就应该在应用的运行期间一直存在,因此 SqlSessionFactory 的最佳作用域是应用作用域。有很多方法可以做到,最简单的就是使用单例模式或者静态单例模式。
每个线程都应该有它自己的 SqlSession 实例。SqlSession 实例能执行映射文件中sql语句。SqlSession 的实例不是线程安全的,因此是不能被共享的,所以它的最佳的作用域是请求或方法作用域。绝对不能将 SqlSession 实例的引用放在一个类的静态域,甚至一个类的实例变量也不行。
映射器类
就是一个简单 的接口,其中的方法定义匹配于 SqlSession 方法
我的是一个操作数据库的抽象方法的接口,不知是不是对应这个映射类。
public interface UserMapper {
每次收到的 HTTP 请求,就可以打开一个 SqlSession,返回一个响应,就关闭它。这个关闭操作是很重要的,你应该把这个关闭操作放到 finally 块中以确保每次都能执行关闭。下面的示例就是一个确保 SqlSession 关闭的标准模式:
SqlSession session = sqlSessionFactory.openSession();
try {
// do work
} finally {
session.close();
}
映射器是创建用来绑定映射语句的接口。映射器接口的实例是从 SqlSession 中获得的。映射器实例应该在调用它们的方法中被请求,用过之后即可废弃。最好把映射器放在方法作用域(method scope)内。下面的示例就展示了这个实践:
SqlSession session = sqlSessionFactory.openSession();
try {
BlogMapper mapper = session.getMapper(BlogMapper.class);
// do work
} finally {
session.close();
}
Sql类:
操作数据库的sql语句。
下午要做:
mybatis熟悉后看是个什么东西。
反思:
我应该多复习,把之前学到的东西复习理解下。学了junit我用不上,知识点串不起来我很怀疑我学习效果和我的智商!
评论