MyBatis

2024-08-22

MyBatis(精选3篇)

MyBatis 篇1

1、Mybaits简介

Mybatis,前称ibatis,后改名为Mybatis,截止本文成文,最新版本是3.0.6。它和Hibernate是Java世界使用最多的两种ORM框架。Hibernate理念最为先进,完全实现面向对象的数据库编程,不需要掌握SQL语句,即可实现数据库操作,能够节省开发人员编写大量SQL语句的时间。但是,Hibernate在处理多表关联时,可能会出现N+1问题,性能会有较大影响,要解决性能问题,需要较深的Hibernate知识和项目经验。Mybatis需要自己写SQL语句,开发效率不如Hibernate,很难做到底层多数据库的通用。但对程序员来说有更高的可控性,可以更容易的对SQL语句进行优化,提高效率。

在开发中直接使用JDBC一个非常普遍的问题就是动态SQL。如果参数值、参数本身和数据列都是动态SQL,通常的解决方法就是写很多if-else条件语句和字符串连接。而Mybatis通过OGNL提供了一套非常清晰的方法来解决动态SQL的问题。

2、实现My SQL的物理分页

My SQL使用limit子句来实现数据库的物理分页,limit子句接受一个或两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数量。在Mybatis中,只需要在相应的查询语句后,加上limit子句,即可实现物理分页。如下,以一个只有字段id,name,age的表为例。该配置会根据传入的Hash Map,如果含有键start和键end,那么即通过Mybatis强大的动态SQL,生成含有My SQL分页的SQL语句。

3、实现Oracle的物理分页

Oracle数据库的物理分页,相对My SQL没有那么方便,使用rownum嵌套查询来实现分页,为简化配置,在Mybatis中定义一个Oracle的分页配置XML文件,其它实体映射文件引入该文件即可。分页配置XML文件主要代码如下:

在需要做分页的查询语句中,最开始的位置引入Head部分,最后的位置引入Tail部分,如果在传入的Hash Map,有键start和键end,即会动态生成含有Oracle物理分页的SQL语句。

4、结语

分页查询是系统开发中常用的功能,Mybatis 3和i Batis 2自带的分页,使用的是内存分页,即将所有数据读取到内存,然后判断要显示哪些条目。如果数据量比较大,毫无疑问会发生内存溢出,客户端获取数据很慢甚至无法获取到数据,因此,实际开发中,使用较多的是利用数据库自带的分页语句来实现物理分页。本文讲述了如何为Mybatis 3添加My SQL和Oracle的物理分页功能。

参考文献

[1]李辉,王瑞波.多条件分页查询优化的设计方法[J].计算机工程,2010,2.

[2]李刚.轻量级Java EE企业应用实战[M].电子工业出版社,2011.

MyBatis 篇2

mybatis和springmvc通过订单商品 案例驱动

第一天:基础知识(重点,内容量多)

对原生态jdbc程序(单独使用jdbc开发)问题总结

mybatis框架原理(掌握)

mybatis入门程序

用户的增、删、改、查

mybatis开发dao两种方法:

原始dao开发方法(程序需要编写dao接口和dao实现类)(掌握)

mybaits的mapper接口(相当于dao接口)代理开发方法(掌握)

mybatis配置文件SqlMapConfig.xml mybatis核心:

mybatis输入映射(掌握)

mybatis输出映射(掌握)

mybatis的动态sql(掌握)

第二天:高级知识

订单商品数据模型分析

高级结果集映射(一对一、一对多、多对多)

mybatis延迟加载

mybatis查询缓存(一级缓存、二级缓存)

mybaits和spring进行整合(掌握)

mybatis逆向工程

对原生态jdbc程序中问题总结

环境

java环境:jdk1.7.0_72 eclipse:indigo mysql:5.1

创建mysql数据

导入下边的脚本:

sql_table.sql:记录表结构

sql_data.sql:记录测试数据,在实际企业开发中,最后提供一个初始化数据脚本

jdbc程序

使用jdbc查询mysql数据库中用户表的记录。

创建java工程,加入jar包:

数据库驱动包(mysql5.1)

上边的是mysql驱动。下边的是oracle的驱动。

程序代码:

问题总结

1、数据库连接,使用时就创建,不使用立即释放,对数据库进行频繁连接开启和关闭,造成数据库资源浪费,影响 数据库性能。设想:使用数据库连接池管理数据库连接。

2、将sql语句硬编码到java代码中,如果sql 语句修改,需要重新编译java代码,不利于系统维护。

设想:将sql语句配置在xml配置文件中,即使sql变化,不需要对java代码进行重新编译。

3、向preparedStatement中设置参数,对占位符号位置和设置参数值,硬编码在java代码中,不利于系统维护。

设想:将sql语句及占位符号和参数全部配置在xml中。

4、从resutSet中遍历结果集数据时,存在硬编码,将获取表的字段进行硬编码,不利于系统维护。

MyBatis 篇3

先对要使用到的框架和工具进行以下介绍。

1 相关技术和工具介绍

MVC架构是一个受大众欢迎的应用开发模式, 通过控制器、模型和视图的配合, 可以有效提高应用开发效率。Spring MVC框架围绕Dispatcher Servlet这个核心展开, Dispatcher Servlet是Spring MVC的总导演、总策划, 它负责截获请求并将其分派给相应的处理器处理。Spring MVC框架包括注解驱动控制器、请求及响应的信息处理、视图解析、本地化解析、上传下载解析、异常处理以及表单标签绑定等内容。

下面对Spring MVC处理请求的整体过程做一下高空俯瞰[1]。

Mybatis是一款基于Java的持久层框架。相对于JDBC, My Batis使用起来更加灵活, 在使用的时候更加专注于CURD, 避免了一些重复性代码, 使用起来更加方便。

My Batis应用程序主要都是使用Sql Session Factory的实例, 一个Sql Session Factory实例可以通过Sql Session Factory Builder获得。用xml文件构建Sql Session Factory实例是非常简单的事情。

将My Batis和Spring集成后, Sql Session Factory和session的获取、释放都可以交给Spring来处理。

Free Marker是一个模板引擎, 一个基于模板生成文本输出的通用工具, Free Marker可以基于模板生成HTML、XML、Java源代码等多种类型的输出内容。用户可以使用Free Marker生成基于模板的一段字符内容、直接输出为一个文件;或作为结果在程序中使用。虽然Free Marker具有一定的编程能力, 但通常由Java程序准备模型数据, Free Marker仅负责基于模板对模型数据进行渲染的工作。

Tomcat是Apache软件基金会的Jakarta项目中的一个核心项目。因为Tomcat技术先进、性能稳定, 而且免费, 深受Java爱好者的喜爱, 并得到了部分软件开发商的认可, 成为目前比较流行的Web应用服务器。

Tomcat服务器是一个免费的开放源代码的Web应用服务器, 属于轻量级应用服务器。

2 数据对象及业务逻辑Bean配置

2.1 Spring MVC、My Batis和free marker的集成

2.1.1 Spring集成My Batis

结合需求的实现, 采用的框架是Spring MVC+My Batis+free marker。关于Spring MVC的配置, 就不再这里赘述了。接下来需将Spring MVC和My Batis进行集成, 因为Mybatis是一个ORM框架, 所以其需要一个数据源, 这里选用apache的Data Source作为数据源。下面罗列Spring MVC集成My Batis的主要代码:

经过上面的配置, 成功集成My Batise和Spring MVC。

2.1.2 Spring MVC集成free marker

Spring MVC的视图解析器的工作比较单一:将逻辑视图名解析为一个具体的视图对象。

搭建好Free Marker的环境后, 就可以通过Free Marker View Resolver将控制器返回的逻辑视图解析为已对应的Free Marker View视图对象。

2.2 封装类及配置文件的实现

在编写具体的代码前, 还需要做的一件事情就是:需要对查询处理的数据对象进行封装。按照面向对象编程的思想, 一切皆对象。所以, 将从数据库查询出来的数据封装为对象, 因为需要编写一个名字为My Resouces普通的POJO。

由于使用了My Batis框架, My Batis可以基于注解, 也可以基于XML文件, 这里是基于XML文件的。如下是部分代码:

2.3 在业务逻辑中获取分页数据

在编程时, 有两种实现提取指定页记录的办法:方法一是先查询得到所有的记录, 然后通过页面指定的显示数量来获取特定页的记录;方法二是从数据库一次性将指定页的记录查询出来。显然, 第二种方法效率更高, 没有返回多余的数据。因此, 基于这样的思维, 编写一个Pager类, 在该类中, 会封装查询参数, 查询结果, 获取首页、末尾页、上一页和下一页等信息。

封装pager对象后, 将实现查询业务。根据面向接口编程思想, 在接口里面定义分页查询的方法。并通过Resources DAOImpl这个实现类实现具体的查询代码:

在上面的示例中, 借助了Row Bounds类来进行物理分类。然后, 调用My Batis的sql Session来进行分页查询。

2.4 控制器实现

在Spring3 MVC控制器中, 处理方法会将调用业务逻辑对象获取的资源信息写入到类型为Model Map的模型中。不管控制器的实现方法返回的是String类型还是View类型。Spring MVC都会转换为Model And View对象, 以下是具体代码:

@Controller注解表明了这是一个控制器。在该控制器中, 通过注入的方式将IResources DAO的Bean注入到控制器中, 然后调用该dao的查询方法。

2.5 视图实现

由于采用了free marker作为视图模板。利用free marker的list标签进行迭代就可以对列表进行展示了。

要访问某页资源可发送如下形式的URL请求, 访问结果如图1所示。

3 结语

本文结合资源查询的应用设计, 介绍了Spring MVC、My Batis和free maker的集成, 并进行数据分页显示的具体设计过程。包括应用配置、业务逻辑设计、控制器和视图的设计等。本文假定每页的大小固定为10条记录。每页的分页大小是可变的, 可以通过URL参数传递页面大小信息。

参考文献

【MyBatis】推荐阅读:

上一篇:招标档案下一篇:大学生生涯决定分析

本站热搜

    相关推荐