发表于: 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 映射文件

3.Java类:

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我用不上,知识点串不起来我很怀疑我学习效果和我的智商!



返回列表 返回列表
评论

    分享到