您的当前位置:首页正文

Mybatis总结

来源:帮我找美食网
Mybatis总结

1. Mybatis框架的作用?为什么要用?

作用: 是基于jdbc之上的一套数据库访问框架.

作用是--连接数据库,完成增删查改操作

优点:

1. 容易!简单!方便!

2. 减少了使用JDBC时的代码

3. 能与spring和struts2的进行整合,作为框架集成。 4. sql语句放在xml里面, sql语句便于维护和扩展。 缺点:

1. Mybatis任然半自动化,sql工作量大。 2. Sql依赖数据库,数据库难以移植。 3. 参数使用不简便

4. 缓存使用效果不佳,使用二级缓存时,产生脏数据。

5. 开发规范中要求,所有牵涉到业务逻辑部分的数据库操作,必须在数据库层

存储过程实现

2. MyBatis的工作流程或运行原理?

1. Io流读取mybatis.xml主配置文件。

2.创建一个 sqlSessionFactoryBuilder类的对象 builder

3. sqlSessionFactoryBuilder的对象builder.build(io读取结果) 根据io流的读取结果获取sqlSessionFactory类的对象

4. sqlSessionFactory使用方法openSession()获取sqlSession对象

5. sqlSession类的对象执行sql语句、执行对应的存储过程,完成增删查改操作 6.然后进行事务判断 7.成功进行提交(commit)和失败进行回滚(rollback) 8. 完成关闭sqlSession,

3.MyBatis运行环境配置 首先创建一个 mybatis.xml文件 1.配置我们所使用环境对象----- 我们使用的是MyBatis

2.设置我们所配置运行环境的 id号

-----环境标签

3.设置使用事物,这里选用的是java.sql.Connection的事物管理

---事务管理标签

① 使用JDBC的事务管理机制:利用java.sql.Connection对象完成对事务的提交(commit()),回滚(rollback()),关闭(close())等

② 使用MANAGED的事务管理机制:mybatis自身不会去实现事务管理,而是让程序的容器如(JBOSS,Weblogic)来实现对事务的管理

4.设置连接类型

---数据源标签

①UNPOOLED:每次请求都会打开和关闭连接----建立新的连接

②JNDI:通过外部容器创建连接池的实现—

③POOLED:是JDBC连接对象的数据源创建连接池的实现。 使用--属性标签

设置4个属性标签

5.驱动技术,使用jdbc驱动技术连接数据库

6.数据库的地址

7.数据库账户

8.数据库密码

4.Mybatis和jdbc的比较:

Jdbc:是一套数据库访问标准,提供了一组接口,是Java语言访问数据库用的东西。 Mybatis:是基于jdbc之上的一套数据库访问框架,但它将sql语句抽取到配置文件中,便于维护和扩展。

5. MyBatis跟hibernate的比较?

1—从学习难易来说:

Mybatis简单易学,hibernate相对较复杂。 2—从dao层的编写来说

Hibernate的dao层中较简单,mybatis的dao层则需要配置存储过程、创建sqlSession对象

3—从自动化水平来说

Mybatis是半自动化,需要手动编写sql语句,hibernate是全自动的,只需要配置好,就可以完成所有工作。

4—从优化能力来说

mybatis的只能进行小范围的优化,而Hibernate是根据映射的关系全部优化, Sql依赖数据库,而数据库难以移植。 5—从缓存使用的角度来说

Hibernate有更好的二级缓存机制,可以使用第三方缓存,而mybatis缓存机制不佳。

6. MyBatis的增删改查,存储过程配置?

首先先说传入传出: parameterType 是传入一个对象、基本数据类型 parameterMap 是传入一个map集合

resultType resultMap

是返回一个对象、基本数据类型 是返回一个map集合

1 准备数据库表和存储过程,在模型层的xml文件中配置存储过程 2 存储过程的具体配置如下

增:增加的sql语句 删:删除的sql语句 改:修改的sql语句 查:

7. Mybatis的主键如何获取?

在模型层xml文件中,在创建操作时,可以使用设置主键

插入一条记录,需要自动生成主键ID,在标签内部加入标签

例如: select @@identity as 属性

8. Mybatis中“#”和“$”的区别? 1.#将传入的数据当成一个字符串,传入时会帮数据加上双引号; ---传参数

2.$会将传入的数据直接显示生成在sql中 ---传文字

所以:

#号不会更改sql语句。而$可以用于更改sql语句,例如传入表名、字段名等。 在这个例句中: like‘%${filedName}%’ 这里传入的是值,所以应为: 应该是like #{filedName}

$符号的使用,让我在使用MyBatis时,可以设置一些使用动态表名? 使用${}$使用数据注入

对$符号使用动态表名达到以下效果 select * from $Student$ 需要在标签定义remapResults=\"true'

9.

Ibatis和MyBatis的区别?

1. Ibatis是3.0以前的版本,是甲骨文公司管理、维护。 mybatis是3.0以后的版本,是google进行管理、维护。 2. Mybatis引入了注解。

3. Mybatis可以使用接口编程。

4. ibatis需要我们在Dao的实现类中指定具体的xml映射文件,Mybatis实现了DAO接口与xml文件的绑定,自动生成接口的具体实现类,使用起来更加方便

10 在MyBatis怎样使用缓存数据?

1.缓存: 是介于数据库与应用程序之间,是数据库数据在内存中临时存放的容器. 2.缓存作用: 减少了应用程序对数据库访问的次数,提高了应用的运行性能。

3.缓存使用: 查询数据,先从缓存中查找,如果存在就直接返回数据; 如果不存在, 去数据库中查询并存放到缓存中;

4.缓存主要做查询操作, 如果增删改数据后,要及时更新缓存库数据;

5.一级缓存:是sqlSession级别的缓存,使用sqlSession时自带有的,清除用clearCache()方法。 6.二级缓存:是跨sqlSession级别的缓存

①:mybatis.xml文件中配置

②:sql的xml文件中需要配置 cache标签 注:

eviction----> 缓存队列,先进先出 flushInterval------> 刷新缓存的时间,毫秒 Size-----> 缓存的对象数目

readOnly(true)-----> 缓存的隔离级别,只读

不能使用缓存的情况:

1. 敏感数据(跟钱,财务数据,核心数据有关的数据),不允许放入缓存中 2. 频繁更新的数据 3. 不常引用的数据

4. 不允许脏读(误读)的数据。

因篇幅问题不能全部显示,请点此查看更多更全内容

Top