发表于: 2018-03-23 20:33:09

1 812


今天完成的事情

1.mybatis写了增删改查增删查demo跑通了改的这部分还是再报错没找出来

我发现写的还是JDBC模式后来才发现用mybatisDAO要用到到动态mapper)

2.学习了一点mybais的知识

SqlSesssionFactory,SqlSession,创建Session实例的过程

明天计划的事情

1.继续学习mybatismybatis写出来DAO

遇到的问题

1.找不到mapper

一处是路径写错在这个位置

一处是在config.xml我添加映射的时候用的是

package 自动扫描时,mapper接口文件和mapper配置文件必须在同一个包下而我的不在

最后分别指定解决

2.mapper。xml自定义返回结果集的时候javatype类型不对当时给id设置的时Long

修改正确后是这样

修改正确后解决

3.在跑修改更新地方时报如下错误还未找到解决方法

 

Test测试语句

mapper.xmlsql语句

 

收获

1.mybatis基础知识

、SqlSesssionFactory

SqlSessionFactoryMyBatis的关键对象它是单个数据库映射关系经过编译后的内存镜像

SqlSessionFactory对象的实例可以通过SqlSessionFactoryBuilder对象来获得SqlSessionFactoryBuildr则可以从XML配置文件或一个预先定制的Configuration的实例构建出Sq1SessionFactory的实例

、SqlSession

SqlSessionMyBatis的关键对象是执行持久化操作的对象类似于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.在配置的时候数据类型参数路径很重要一定要小心不能写错了

这样找错误是真的要命。。。而且相当浪费时间,今天绝大部分时间都用在找错上了

 

 



返回列表 返回列表
评论

    分享到