MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
二、 环境搭建
mybatis 的开发环境搭建,选择: eclipse j2ee 版本,mysql 5.1 ,jdk 1.7,mybatis3.2.0.jar包。这些软件工具均可以到各自的官方网站上下载。
下载:http://mybatis.github.io/
1. 新建web工程
New - dynamic web project - mybatis
2. 添加mybatis jar包
添加mybatis包和mysql数据jar包
3. 配置mybatis配置文件
在classpath下新建:Configuration.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
节点介绍
properties —— 定义配置外在化
settings —— 一些全局性的配置
typeAliases ——定义类别名,简化xml文件的配置
typeHandlers —— 定义类型处理,也就是定义java类型与数据库中的数据类型之间的转换关系
objectFactory
plugins —— Mybatis的插件,插件可以修改Mybatis内部的运行规则
environments —— 配置Mybatis的环境
environment
transactionManager —— 事务管理器
事务:JDBC/MANAGER
dataSource —— 数据源
TYPE: POOLED|UNPOOLED|JNDI
POOL:
UNPOOLED:
JNDI:
databaseIdProvider
mappers —— 指定映射文件或映射类配置映射文件
<mappers>
<mapper>映射文件的路径</mapper>
< /mappers>
4. 配置映射文件
在映射的类路径下:
New 类名-Mapper.xml
映射文件声明:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
节点:
Mapper 映射
Namespace:类的全限定名
cache – 配置给定模式的缓存
cache-ref – 从别的模式中引用一个缓存
resultMap – 这是最复杂而却强大的一个元素了,它描述如何从结果集中加载对象
sql – 一个可以被其他语句复用的SQL 块
insert – 映射INSERT 语句
update – 映射UPDATE 语句
delete – 映射DELEETE 语句
select - 映射SELECT语句
三、 实现CUDR
简单的增删改查
<insert id=”add” parameterType=”UserEntity”>
INSET INTO 表名 (字段1,字段2)values(
#{值1},#{值2})
</insert>
<update id=”update” parameterType=”UserEntity”>
UPDATE 表名 SET 字段名1=#{值1},字段名2=#{值2}
WHERE id=#{值}
</update>
<delete id=”delete” parameterType=”int”>
DELETE FROM 表名 WHERE id=#{id值}
</delete>
<select id=”queryall” resultType="UserEntity">
SELECT 要查询的字段名 FROM 表名
</selet>
四、 关联数据查询
五、 动态SQL语句
1. selectKey
2. if
3. if+where
4. if+set
5. if+trim
6. trim代替set
7. choose(when/otherwise)
8. foreach
六、 代码生成工具
七、 数据分页
<select id=”page” resultType=”UserEntity” paramterType=”params”>
SELECT 要查询的字段 FROM 表名 LIMIT #{pageNo},${pageSize}
</select>
Params:必须是maps
八、 cache缓存
MyBatis 包含一个强在的、可配置、可定制的缓存机制。MyBatis 3 的缓存实现有了许多改进,既强劲也更容易配置。默认的情况,缓存是没有开启,除了会话缓存以外,它可以提高性能,且能解决全局依赖。开启二级缓存,你只需要在SQL 映射文件中加入简单的一行:<cache/>
这句简单的语句的作用如下:
1. 所有在映射文件里的select 语句都将被缓存。
2. 所有在映射文件里insert,update 和delete 语句会清空缓存。
3. 缓存使用“最近很少使用”算法来回收
4. 缓存不会被设定的时间所清空。
5. 每个缓存可以存储1024 个列表或对象的引用(不管查询出来的结果是什么)。
6. 缓存将作为“读/写”缓存,意味着获取的对象不是共享的且对调用者是安全的。不会有其它的调用
7. 者或线程潜在修改。
九、 集成Spring
十、 MyBaties的优点与缺点
优点:
1. 易于上手和掌握。
2. sql写在xml里,便于统一管理和优化。
3. 解除sql与程序代码的耦合。
4. 提供映射标签,支持对象与数据库的orm字段关系映射
5. 提供对象关系映射标签,支持对象关系组建维护
6. 提供xml标签,支持编写动态sql。
缺点:
1. sql工作量很大,尤其是字段多、关联表多时,更是如此。
2. sql依赖于数据库,导致数据库移植性差。
3. 由于xml里标签id必须唯一,导致DAO中方法不支持方法重载。
4. 字段映射标签和对象关系映射标签仅仅是对映射关系的描述,具体实现仍然依赖于sql。(比如配置了一对多Collection标签,如果sql里没有join子表或查询子表的话,查询后返回的对象是不具备对象关系的,即Collection的对象为null)
5. DAO层过于简单,对象组装的工作量较大。
6. 不支持级联更新、级联删除。
7. 编写动态sql时,不方便调试,尤其逻辑复杂时。
8 提供的写动态sql的xml标签功能简单(连struts都比不上),编写动态sql仍然受限,且可读性低。
9. 使用不当,容易导致N+1的sql性能问题。
10. 使用不当,关联查询时容易产生分页bug。
11. 若不查询主键字段,容易造成查询出的对象有“覆盖”现象。
12. 参数的数据类型支持不完善。(如参数为Date类型时,容易报没有get、set方法,需在参数上加@param)
13. 多参数时,使用不方便,功能不够强大。(目前支持的方法有map、对象、注解@param以及默认采用012索引位的方式)
14. 缓存使用不当,容易产生脏数据。
总结:
mybatis 的优点其实也是mybatis的缺点,正因为mybatis使用简单,数据的可靠性、完整性的瓶颈便更多依赖于程序员对sql的使用水平上了。sql写在 xml里,虽然方便了修改、优化和统一浏览,但可读性很低,调试也非常困难,也非常受限,无法像jdbc那样在代码里根据逻辑实现复杂动态sql拼接。 mybatis简单看就是提供了字段映射和对象关系映射的jdbc,省去了数据赋值到对象的步骤而已,除此以外并无太多作为,不要把它想象成 hibernate那样强大,简单小巧易用上手,方便浏览修改sql就是它最大的优点了。
mybatis 适用于小型且程序员能力较低的项目和人群使用,对于中大型项目来说我并不推荐使用,如果觉得hibernate效率低的话(实际上也是使用不当所 致,hibernate是实际上是不适用于拥有高负载的工程项目),还不如直接用spring提供的jdbc简单框架(Template),同样支持对象 映射。
十一、 SqlSessionFactory
测试:Reader reader = Resources.getResourceAsReader("Configuration.xml");
SqlSessionFactory factory= new SqlSessionFactoryBuilder().build(reader);
示例:
返回一个集合:
Factory.openSesion.select(“com.lsw.mybatis.entity.UserEntity.queryAll”);
相关推荐
MyBatis入门到精通,PDF,新手不错的学习资料。完整版的文档。
Mybatis入门
mybatis入门案例mybatis入门案例mybatis入门案例mybatis入门案例mybatis入门案例mybatis入门案例mybatis入门案例mybatis入门案例mybatis入门案例mybatis入门案例mybatis入门案例mybatis入门案例mybatis入门案例...
MyBatis入门到精通配套资源,MyBatis入门到精通配套资源,MyBatis入门到精通配套资源
Mybatis入门程序实现,实现简单的数据库中的增删改查,适合小伙伴学习用,如果喜欢,或者觉得有用,请关注我的微信公众号:从小白到架构师。
mybatis入门示例项目,包括数据库sql语句,映射文件配置,配置文件加载和Junit测试,log4j打印日志等功能。
本次博客主要记载了使用IDEA创建Mybatis项目的操作步骤,希望可以给想要自学Mybatis框架的技术员提供一些帮助,由于我在别的博客里搜查详细的Mybatis入门案例,用在最新版上的IDEA报错信息出现的比较多,让我怀疑我...
mybatis入门程序开始进入SSM框架学习,文件仅仅实现MyBatis环境查询1.idea创建简单maven给出 2.pom.xml导入依赖
mybatis入门程序 用户的增、删、改、查 mybatis开发dao两种方法: ① :原始dao开发方法(程序需要编写dao接口和dao实现类)(掌握) ② :mybaits的mapper(代理)接口(相当于dao接口)代理开发方法(掌握)第二...
Mybatis入门项目实例,笔记,内含单独mybatis jar包
MyBatis 入门
MyBatis简单入门的一些介绍内容
Mybatis 入门到理解篇,Mybatis 入门到精通,基础知识
MyBatis入门
Mybatis 入门小例子
一个简单的Mybatis入门案例,其中有如何配置,dao层注解方式的举例和XML配置方式的举例
mybatis 入门代码示例
mybatis入门实战之简单的增删改查,方便初学者学习,包含了log,Maven等等
最简单的mybatis入门程序,连接mysql数据库的。容易看懂,新手可以参考!
MyBatis入门实例源码