发表于: 2018-03-23 20:33:09
1 809
今天完成的事情:
1.用mybatis写了增删改查,增删查demo跑通了,改的这部分还是再报错没找出来
(我发现写的还是JDBC模式,后来才发现用mybatis写DAO要用到到动态mapper)
2.学习了一点mybais的知识
SqlSesssionFactory,SqlSession,创建Session实例的过程
明天计划的事情:
1.继续学习mybatis用mybatis写出来DAO
遇到的问题:
1.找不到mapper
一处是路径写错,在这个位置
一处是在config.xml我添加映射的时候用的是
package 自动扫描时,mapper接口文件和mapper配置文件必须在同一个包下,而我的不在
最后分别指定解决
2.在mapper。xml自定义返回结果集的时候javatype类型不对当时给id设置的时Long
修改正确后是这样
修改正确后解决
3.在跑修改更新地方时,报如下错误,还未找到解决方法
Test测试语句
mapper.xml的sql语句
收获:
1.mybatis基础知识
一、SqlSesssionFactory
SqlSessionFactory是MyBatis的关键对象,它是单个数据库映射关系经过编译后的内存镜像。
SqlSessionFactory对象的实例可以通过SqlSessionFactoryBuilder对象来获得,而SqlSessionFactoryBuildr则可以从XML配置文件或一个预先定制的Configuration的实例构建出Sq1SessionFactory的实例。
二、SqlSession
SqlSession是MyBatis的关键对象,是执行持久化操作的对象,类似于JDBC中的Connection。
它是应用程序与持久存储层之间执行交互操作的一个单线程对象,也是MyBatis执行持久化操作的关键对象。
SqlSession对象完全包含以数据库为背景的所有执行SQL操作的方法,它的底层封装了JDBC连接,可以用SqlSession实例来直接执行已映射的SQL语句。
每个线程都应该有它自己的SqlSession实例。SqlSession的实例不能被共享,也是线程不安全的,绝对不能将SqlSession 实例的引用放在一个类的静态字段甚至是实例字段中。也绝不能将SqlSession实例的引用放在任何类型的管理范围中,比如Serlvet当中的HttpSession 对象中。使用完SqlSession之后关闭Session很重要,应该确保使用finally块来关闭它。
三、创建Session实例的过程
SqlSessionFactory对象的openSession方法可以打开SqlSession对象
MyBatis的初始化就发生在:
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream) ;
MyBatis初始化基本过程:
SqlSessionFactoryBuil根据传入的数据流生成Configuration对象,然后根据Configuration对象创建默认的SqlSessionFactory实例。
MyBatis 初始化要经过以下几步:
(1)调用SqlSessionFactoryBuiler对象的build(inputStream)方法。
(2)SqlSessionFactoryBuilder会根据输入流inputStream 等信息创建XMLConfigBuilder对象。
(3)SqlSessionFactoryBuilder调用XMLConfigBuilder对象的parse()方法。
(4)XMLConfgBuilder 对象解析XML 配置文件返回Configuration 对象。
(5)SqlSessionFactoryBuilder根据Configuration 对象创建一个DefaultSessionFactory对象,供客户端使用。
(6)SqlSessionFactoryBuilder返回DefaultSessionFactory对象给客户端,由此可见,SqlSessionFactory是根据MyBatis的配置文件mybatis-config.xml创建的。
2.在配置的时候,数据类型,参数,路径很重要,一定要小心,不能写错了,
这样找错误是真的要命。。。而且相当浪费时间,今天绝大部分时间都用在找错上了
评论