MyBatis知多少(19)MyBatis操作】的更多相关文章

若要使用iBATIS执行的任何CRUD(创建,写入,更新和删除)操作,需要创建一个的POJO(普通Java对象)类对应的表.本课程介绍的对象,将“模式”的数据库表中的行. POJO类必须实现所有执行所需的操作所需的方法. 我们已经在MySQL下有EMPLOYEE表: CREATE TABLE EMPLOYEE ( id INT NOT NULL auto_increment, first_name ) default NULL, last_name ) default NULL, salary…
本节从表中使用MyBatis删除记录. 我们已经在MySQL下有EMPLOYEE表: CREATE TABLE EMPLOYEE ( id INT NOT NULL auto_increment, first_name ) default NULL, last_name ) default NULL, salary INT default NULL, PRIMARY KEY (id) ); 假设这个表是有两条记录如下: mysql> select * from EMPLOYEE; +----+-…
上一章展示了如何使用MyBatis对表进行读取操作.本章将告诉你如何在一个表中使用MyBatis更新记录. 我们已经在MySQL下有EMPLOYEE表: CREATE TABLE EMPLOYEE ( id INT NOT NULL auto_increment, first_name ) default NULL, last_name ) default NULL, salary INT default NULL, PRIMARY KEY (id) ); 此表有如下只有一条记录: mysql>…
上篇展示了如何使用MyBatis执行创建操作表.本章将告诉你如何使用MyBatis来读取表. 我们已经在MySQL下有EMPLOYEE表: CREATE TABLE EMPLOYEE ( id INT NOT NULL auto_increment, first_name ) default NULL, last_name ) default NULL, salary INT default NULL, PRIMARY KEY (id) ); 此表有如下只有一条记录: mysql> select…
一.了解myBatis的作用域和生命周期[错误的使用会导致非常严重的并发问题] (1)SqlSessionFactoryBuilder [ 作用:仅仅是用来创建SqlSessionFactory,作用域:方法作用域(局部变量) ] (2)SqlSessionFactory(类似连接池) [ 生命周期:一旦被创建就应该在应用的运行期间一直存在,作用域:应用作用域变量(使 用单例模式/静态单例模式) ] (3)SqlSession(类似连接对象) [ 特点:非线程安全,不能共享,作用域:请求或方法作…
iBatis和Hibernate之间有着较大的差异,但两者解决方案很好,因为他们有特定的领域.我个人建议使用MyBatis的,如果: 你想创建自己的SQL,并愿意维持他们. 你的环境是由关系数据模型驱动的. 你的项目工作有复杂架构的. 简单地要使用Hibernate,如果: 你的环境是由对象模型驱动的,并希望自动生成的SQL. 要计算的一些区别: MyBatis: 简单 更快的开发时间 灵活 封装尺寸更小 Hibernate: 为你生成SQL,这意味着你不用花时间在SQL上. 提供了许多更先进的…
这是很容易,同时与iBATIS的工作程序进行调试. iBATIS有内置的日志支持,并适用于下列日志库,并在这个顺序搜索他们. Jakarta Commons日志记录(JCL). Log4J JDK 日志 可以使用任何上面列出的库在iBATIS. 调试和Log4J: 假设你要使用Log4J,这是最好用的日志记录.继续操作之前,需要交叉检查以下几点: Log4J JAR 文件 (log4j-{version}.jar) 应在CLASSPATH中. 必须在CLASSPATH中提供log4j.prope…
使用动态查询是MyBatis一个非常强大的功能.有时你已经改变WHERE子句条件的基础上你的参数对象的状态.在这种情况下的MyBatis提供了一组可以映射语句中使用,以提高SQL语句的重用性和灵活性的动态SQL标签. 所有的逻辑是使用一些额外的标签放在:XML文件.下面是一个例子,其中的SELECT语句将努力在两个方面: 如果想传递一个ID,然后它会返回所有与该ID的记录, 否则,将返回所有雇员ID为NULL的记录. <?xml version="1.0" encoding=&q…
使用MyBatis配置来调用存储过程.为了理解这一章,首先需要了解我们是如何在MySQL中创建一个存储过程. 在继续对本节学习之前,可以自行学习MySQL存储过程. 我们已经在MySQL下有EMPLOYEE表: CREATE TABLE EMPLOYEE ( id INT NOT NULL auto_increment, first_name ) default NULL, last_name ) default NULL, salary INT default NULL, PRIMARY KE…
resultMap的元素是在MyBatis的最重要和最强大的元素.您可以通过使用MyBatis的结果映射减少高达90%的JDBC编码,在某些情况下,可以让你做JDBC不支持的事情. ResultMaps的设计是这样的简单语句不需要明确的结果映射,以及更复杂的报表要求不超过绝对必要说明的关系. 本章将只给你一个简单的介绍iBATIS的结果映射. 我们已经在MySQL下有EMPLOYEE表: CREATE TABLE EMPLOYEE ( id INT NOT NULL auto_increment…
小型.简单系统 小型应用程序通常只涉及单个数据库,只有一些相当简单的用户界面和领域模型.它的业务逻辑非常简单,甚至对一些简单的CRUD (Create, Read, Update, Delete:增删查改)应用程序来说可能根本就不存在.MyBatis之所以非常适合于小型应用程序,有3个原因. 第一,MyBatis本身就很小并且简单.它不需要服务器或者其他任何类型的中间件.根本不需要任何额外的基础设施.MyBatis也没有任何第三方依赖.MyBatis的最简安装只需 要2个JAR文件,总计不过37…
瘦数据模型是一种最为臭名昭著并且问题多多的对关系数据库系统的滥用.不幸的是,有时又的确需要瘦数据模型.所谓瘦数据模型,就是简单地将每张表都设计为一种通用数据结构,用于存储名值对的集合.这非常像Java中的属性文件.有时这些表也可用于存储元数据,例如期望的数据类型等.这是必要的, 因为数据库只允许一列有一种类型定义.要更好地理解瘦数据模型,考虑下面这个典型的地址数据的示例,如表1-2所示. 表1-2典型模型中的地址数据 ADDRESSJD STREET CITY STATE ZIP COUNTRY…
任何一个重要的数据库无疑都会拥有不止一个依赖者.即使该数据库只是简单地被两个Web 应用程序所共享,也有许多事情需要考虑.假设有一个名为网上购物车的Web应用程序,它使用了一个包含类别代码的数据库.就网上购物车来说,类别代码是静态的,永远不会变化,所以该应用程序高速缓存了这些代码以提高性能.现在再假设有一个名为网上管理器的Web应用程序,它是用于更新类别代码的.这个网上管理器 应用程序运行在一个不同的服务器上,是一个完全独立的程序.那么,设想一下,当网上管理器更新了一个类别代码时,网上购物车如何…
如果你从事软件开发工作有了一段时间的话,那么肯定听过关于“自己动手还是花钱购买” 的争论.该争论是说,针对一个业务问题,我们是应该自己动手构建自己的解决方案呢,还是应 该花钱购买一个声称已经解决了此问题的软件包.通常付出的代价是差不多的(否则也就没什么好争论的了),但真正的权衡其实在于“自己动手所要花费的时间”与“花钱购买来的软件包和 我们要解决的问题的契合度”.自己构建的软件当然能恰到好处地符合业务需求,但实现它确实 需要更多的时间.购买软件包当然非常迅速,但有时又不一定能满足我们所有的需求.…
MyBatis是一个混合型解决方案.它汲取了所有这些解决方案中最有价值的思想并将它们融会贯通.下表总结了MyBatis从我们之前讨论的那些方案中所汲取的思想. 方 案 相同的优点 解决的问题 存储过程 MyBatis对SQL进行了封装和外部化,使SQL从你 的应用程序代码中分离出来.MyBatis具有与存储 过程相似的API,但MyBatis的这些API是面向对象 的.MyBatis也完全支持对存储过程的直接调用 业务逻辑从数据库中分离出来,应用程序更容易部署与测试,也具有更好的可移植性 内联S…
解决存储过程固有限制的方法之一就是将SQL嵌入到更加通用的语言中去.与存储过程将业务逻辑移入数据库相反,内联SQL将SQL从数据库移入了应用程序代码.这就使得SQL语句可以直接与语言进行交互.从某种意义上说,SQL成为了该语言的一个特性.有很多语言具有这种“特 性”,包括COBOL.C.甚至Java.以下就是Java中SQL的一个示例: String name; Date hiredate; #sql { SELECT emp_name, hire_date ,hiredate FROM emp…
MyBatis从目前最流行的关系数据库访问方法中吸收了大量的优秀特征和思想,并找出其中的协同增效作用.下图展示了MyBatis框架是如何吸收我们在多年使用不同方式进行数据库集成的 开发过程中所学到的知识,并将其中最优秀的思想结合起来,形成这个混合型解决方案的. 接下来的几节将讨论这些不同的数据库访问方法,以及iBATIS从每种方法中汲取的优秀思想. SQL MyBatis的核心是SQL.从根本上说,所有的关系数据库都支持SQL,并将它作为与数据库交互的主要方式.SQL是一种简单的.非过程化的语言…
一.MyBatis框架基本介绍: 1.认识 MyBatis: MyBatis 是支持普通 SQL 查询,存储过程和高级映射的持久层框架,严格上说应该是一个 SQL 映射框架. 其前身是 iBatis,也就是淘宝使用的持久层框架. 几乎所有的 JDBC 代码和参数的手工设置以及结果集的处理都可以交给 MyBatis 完成, 而这只需要简单的使用 XML或注解配置 就可以完成. 和 Hibernate 相比更简单.更底层.性能更优异,因此更深入人心,更受企业的青睐. 2.下载地址和文档: GitHu…
有了MyBatis,就不再需要编写JDBC代码了.像JDBCT这样的API的确非常强大,但使用起来总不免觉得太过繁琐.代码清单给出了一个使用JDBC的示例. 从这个例子中很容易看出,JDBC API会产生许多额外的开销.尽管如此,每一行代码又都是必不可少的,所以要减少代码量还真不是一件容易的事情.最多也只不过是将其中的一些代码 挪到某个实用方法中,最明显的就是那些关闭资源(如PreparedStatement和 ResultSet)的代码. 其实,如果使用MyBatis,MyBatis在后台也是…
之前我们详细地讨论了MyBatis背后的设计理念以及iBATIS框架是如何产生的.也说明了MyBatis是一个混合型解决方案,它从处理关系数据库的其他不同方法那里借鉴了许多思想.那么MyBatis到底是什么呢? MyBatis就是我们通常所说的数据映射器.所谓映射器层,是用于在对象和数据库之间搬运数据,同时保证对象.数据库以及映射器本身都相互独立. 0/RM工具将数据库表及其列映射为应用程序中的类及字段.或者说, 0/RM工具在数据库的元数据与类的元数据之间建立起了一种映射关系. MyBatis…
在现代软件项目中数据库通常被认为是遗留组件.它们一直以来都被认为难以使用,不论是出于技术的还是非技术的原因.大多数软件开发人员宁可从头开始完完全全地重建一个数据库. 如果数据库是遗留下来的,相信一些开发人员会真心地希望负有此责的,只可惜两种情况都是不实际的,也不可能发生.不论你是否相信,数据库的存在总有它自己的理由——不论这个理由是否充分.可能是数据库变更的代价太高了,也可能是因为有其他系统依赖于该数据库.不论数据库被质疑的原因如何,我们都应该学会如何高效地与任何类型(包括饱受非议)的数据库打交…
企业数据库比应用程序数据库更大,其外部影响也更大.它们与其他系统之间存在更多的关系,包括依赖关系和被依赖关系.这些关系可能是Web应用程序与报表工具之间的,但也很有可 能是与其他的复杂系统和数据库的接口.在企业数据库中,不仅仅存在远比应用程序数据库多得 多的外部接口,而且这些接口的作用方式也大不相同.一些接口可能是用于每晚批量加载数据的 接口,其他的则可能是实时事务处理接口.由于这些原因,企业数据库本身可能实际上就是由不止一个数据库组成的.下图从较高的层次描绘了一个企业数据库的例子. 企业数据库…
应用程序数据库往往是最小.最简单.也最易于使用的数据库.这种数据库往往是我们这些开发人员通常不介意使用甚至非常乐意使用的.应用程序数据库通常与我们的应用程序处于同一个项目中,两者一齐设计和实现.正是因为这个原因,应用程序数据库的设计往往存在非常大的自由度,它也最有可能与我们的特定应用程序完美匹配.应用程序数据库的对外影响是最小的, 因为它通常只有一两个对外接口.第一个接口连接到我们的应用程序,而第二个接口可能就是一个简单的报表框架或报表工具.下图从较高的层次展示了一个应用程序数据库以及它与其他系…
并非所有的数据库都如此复杂,需要使用昂贵的数据库管理系统以及企业级的硬件.一些数 据库其实非常小,足以运行在一台老式的PC机上.所有的数据库都是不一样的.它们有各自不 同的需求和不同的挑战.iBATIS可以帮助你使用几乎任何类型的关系数据库,但了解你使用的数 据库究竟是哪种类型通常也是非常重要的. 数据库的划分更多是依据它与其他系统的关系,而不是依据其设计和大小.但数据库的设计 和大小又往往取决于它与其他系统的关系.另一个会影响数据库设计和大小的因素就是数据库的 年龄.随着时间的推移,数据库往往…
MyBatis的存在就是为了简化对关系数据库的访问.数据库的确非常复杂,要正确地使用它们需要做很多的工作.数据库负责管理数据和修改数据.我们使用数据库而不简简单单地使用一个 平板文件的原因就在于数据库为我们提供了许多好处,特别是在数据完整性.性能以及安全性方面. 数据完整性 数据完整性可能是数据库提供的最重要的好处了,因为没有数据完整性,其他一切就没有意义了.如果数据不是一致的.可靠的以及正确的,那它们又有多少价值呢.数据库通过使用强数 据类型,强制约束,以及使用事务从而实现数据完整性的要求.…
持久层是适合使用MyBatis的地方.在面向对象的系统中,持久层主要关注对象(或者更精确地说应该是存储在那些对象中的数据)的存取.在企业应用程序中持久层通常用关系数据库系统来存储数据,虽然某些情况下其他持久的数据结构或者介质也可能使用.如某些系统就可能会使用简单的以逗号分隔数据的平板文件或XML文件.考虑到企业应用程序的持久化策略往往具有异质性,因此持久层需要关注的第二个问题就是抽象.持久层应该隐藏关于数据如何被存储以及如何被取出的所有细节.这样的细节决不能暴露 给应用程序的其他层. 为更好地理…
表现层 表现层负责向最终用户展示应用程序的控制方式以及数据.它还要负责所有信息的布局和格式.今天,商业应用程序最流行的表现方式应该算是Web前端了,它使用HTML和JavaScript并通 过Web浏览器来满足用户的界面外观需求. Web应用程序的优势包括跨平台兼容性.易部署和可扩展.amazon.com就是Web应用程序的—个极好的例子,它允许你在线购书.这就是Web应用程序的一个绝佳应用,因为不可能要求用 户为了买一本书而去下载一个应用程序. 当需要高级的用户控件或者复杂的数据操纵时,Web…
几乎所有结构良好的软件都使用了分层设计.分层设计将一个应用程序根据技术职能分为几 个内聚的部分,从而将某种特定技术或接口的实现细节与其他部分分离开来.分层设计可以用任 何一种强壮的编程语言来实现.图1-2给出了一个典型的的高级视图,该 图对于许多商业应用程序都是有用的. 下图中的箭头读作“依赖于”或“使用”.这种分层设计其实来源于迪米特法则,该法则的一种表述方式就是,“每一层都应该只对那些与自己紧密相关的层有有限的了解.” 每一层都只与自己的直接下层“交互”.这就保证了依赖流(dependenc…
最近在学习redis,虽然现在还不是很熟练.不过可以进行简单的框架整合开发. IDE:我使用的是IDEA.springmvc+spring+mybatis的整合这个我就不多说了,下面我们先进行这块的整合,最后在加入redis.下边这块就直接上代码. 源码:https://gitee.com/smfx1314/springmvcredis.git 首先看一下我的工程结构: 第一步:在pox.xml中引入jar <?xml version="1.0" encoding="U…
1.Mybatis下载 Mybatis是开源的持久层框架,能够度jdbc进行简单的封装,但其并不是完全的ORM(Object Relational Mapping,对象关系映射),无法脱离数据库进行适配.目前Mybatis能够在githup上直接下载:https://github.com/mybatis/mybatis-3/releases,有多个版本可以选择. 2.Mybatis文件介绍 lib:mybatis依赖包:mybatis-3.4.6.jar:核心包: 3.mybatis配置 创建一…