ibatis的简介与初步搭建应用

一、ibatis的简介

ibatis是什么东西就不介绍了,自己去找谷老师。

这里讲下自己的使用体会。之前自己学过Hibernate,是看尚学堂的视频教学的,看完以后发现Hibernate体系中的内容真的很多,什么N-N关联、HSQL、缓存管理等等,看得我真的很晕,想要一时间掌握还真不可能,反正我现在也不是特别明白。后来新的公司是用ibatis,所以自己回去研究了下,结果发现ibatis真的很简单,体系结构相比Hibernate易化多了。在自己搭建了一个简单的示例后,体会更深,一个ibatis的配置文件、domain对象及其SQLMapper即可搞定,而且在SQLMapper中你只要专注与你的SQL即可。所以以后要是有人问我,怎么去学ORM层的框架,我会推荐他去学ibatis,而不是Hibernate,因为这样简单上手的框架能让你一开始就对ORM的理解更加快速和易于掌握。

 

二、ibatis的下载

The original ibatis project team has moved to MyBatis hosted at Google Code. Seehttp://www.mybatis.org/ for more

  下载地址:http://code.google.com/p/mybatis/downloads/list mybatis3.1.1- ralease

 

三、简单的示例应用

  下图是我的搭建图,其中log4j是用来记录操作记录日志的,可以参见官方的pdf文档;readMe.txt是本人的自己添加的说明文档,没有这两个文档也没关系。

        

 

1.  既然是ORM层的框架,首先我们应该建立数据库及表,SQL如下:

CREATE TABLE goods (id int(11) NOT NULL DEFAULT '0',category_id int(11) DEFAULT NULL,name varchar(100) DEFAULT NULL,price decimal(10,0) DEFAULT NULL,description varchar(100) DEFAULT NULL,acount int(11) DEFAULT NULL,update_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,PRIMARY KEY (id)
)

导入两条数据:

INSERT INTO goods VALUES (1,1,'Nokia-L900',3010,'Windows7 Mobile Phone',1,'2012-07-15');
INSERT INTO goods VALUES (2,1,'Moto-525',1800,'Andriod 2.2',15,'2012-007-15');

 

2.  创建表结构所对应的domain对象

package com.csdn.kane.domain;import java.sql.Timestamp;public class Goods {private int id;private int categoryId;private String name;private float price;private String description;private int acount;private Timestamp updateTime;public int getId() {return id;}public void setId(int id) {this.id = id;}public int getCategoryId() {return categoryId;}public void setCategoryId(int categoryId) {this.categoryId = categoryId;}public String getName() {return name;}public void setName(String name) {this.name = name;}public float getPrice() {return price;}public void setPrice(float price) {this.price = price;}public String getDescription() {return description;}public void setDescription(String description) {this.description = description;}public int getAcount() {return acount;}public void setAcount(int acount) {this.acount = acount;}public Timestamp getUpdateTime() {return updateTime;}public void setUpdateTime(Timestamp updateTime) {this.updateTime = updateTime;}
}


 

3.  配置ibatis的配置文件

<?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">
<configuration><typeAliases><typeAlias alias="Goods" type="com.csdn.kane.domain.Goods"/></typeAliases><environments default="development"><environment id="development"><transactionManager type="JDBC" /><dataSource type="POOLED"><property name="driver" value="com.mysql.jdbc.Driver" /><property name="url" value="jdbc:mysql://127.0.0.1:3306/XiaoqingTest" /><property name="username" value="root" /><property name="password" value="08073440" /></dataSource></environment></environments><mappers><mapper class="com.csdn.kane.dao.GoodsMapper"/></mappers>
</configuration>

 

4.  建立GoodsMapper接口

package com.csdn.kane.dao;import org.apache.ibatis.annotations.Select;import com.csdn.kane.domain.Goods;public interface GoodsMapper {@Select("SELECT * FROM Goods WHERE id=#{id}")public Goods selectGoods(int id);
}


 

5.  接下来就可以自己写一个主方法来测试下了

package com.csdn.kane.test;import java.io.IOException;
import java.io.InputStream;import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;import com.csdn.kane.dao.GoodsMapper;
import com.csdn.kane.domain.Goods;public class TestMybitas {public static void main(String[] args) throws IOException {//最基本的mybitas示例方法TestMybitas.testMethod();}public static void testMethod() throws IOException{String resource = "mybitasConfigration.xml";InputStream inputStream = Resources.getResourceAsStream(resource);SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);SqlSession session = sqlSessionFactory.openSession();try {GoodsMapper mapper = session.getMapper(GoodsMapper.class);Goods goods = mapper.selectGoods(1);System.out.println("good description:"+goods.getDescription());} finally {session.close();}}}

  运行后,你就可以看到结果了。这就是一个最简单的mybatis应用。

    

 

  从上面的流程大家可以看到,这其实和Hibernate是比较相似的,或者说ORM层的框架大多也是这样的:1.首先你要建立数据库及表结构,2.然后创建表结构所对应的domain对象(当然有些会自动生成表结构)3.接着你要配置你的ORM框架的配置文件(包括与数据库的链接配置还有其他内容),4.你要创建domain对象与表结构的映射关系或者sql操作(比如在Hibernate中是XXX.hbm.xml,在mybatis中是XXXMapper.java接口文件或者是XXXMapper.xml配置文件)5.最后你就可以写个测试类了。

 

四、总结

这样你就知道什么是ORM层框架了,就是这么简单,当然还有很多深入的内容,这就得靠你自己去学习了。

推荐学习的时候多看看官方的文档或是API,比如在mybatis的下载文件中有mybatis-3.1.1.pdf文档,里面有很多讲解及简单的学习示例是很不错的,我在学的时候就是这样看文档学的。

 

 

转载于:https://www.cnblogs.com/java-source/archive/2012/07/15/2604336.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/434430.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html中页面按钮隐藏div,html 点击一个按钮 显示另一个div 隐藏之前呢个div(display属性,怎么用js控制)...

用户提问隐藏这个显示这个烦烦烦&#xff1a;嘎嘎嘎 推荐答案function tab(name,cursel,n){for(i1;i<n;i){var condocument.getElementById(name"_"i);var con1document.getElementById(name"_"i"_"i);con.style.blockicursel?"display…

You must install 'makeinfo' on your build machine

ubuntu&#xff1a;sudo apt-get install texinfo 就OK 今天在打包的时候有个包需要 makeinfo 当时就各种搜结果就没有 makeinfo 这个软件包&#xff0c;最后看到有人说其实就是 texinfo 这个包&#xff0c;经过测试&#xff0c;不管是ubuntu 还是qomo &#xff08;yum 源&a…

[0716] Jsoi B Rsss

rsss 时间限制:1秒 内存限制: 128 MB 试题描述 在质数的大家庭中&#xff0c;大小之差不超过2的两个质数称它俩为一对孪生素数&#xff0c;如2和3、3和5、17和19等等。请你统计一下&#xff0c;在不大于自然数N的质数中&#xff0c;孪生素数的对数。 输入要求 输入文件rsss.in…

asp页面怎么转html页面,将asp页面转换成html页面 代码

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼将asp页面转换成html页面Sub GenFile(id)dim objXmlHttpset objXmlHttp Server.CreateObject("Microsoft.XMLHTTP")objXmlHttp.open "GET","http://www.xxx.com/product.asp?id" & id ,falseo…

You must install 'msgfmt' on your build machine

ubuntu&#xff1a;sudo apt-get install gettext 就OK

HDOJ 1875 畅通工程再续

这个畅通工程还是一交就过&#xff0c;看来畅通工程用来入门是最好了&#xff0c;以后拿这些来挂就不会那么打击人了&#xff0c;天天开心。这里求最小生成树之前要自己构图&#xff0c;很简单就是求出点到点之间的距离&#xff0c;如果距离大于1000和小于10都视作不连通。点少…

ISDN与PSTN的区别是什么?

ISDN是综合业务数字网的简称&#xff0c;它由电话综合数字网&#xff08;IDN&#xff09;发展而来。ISDN是数字交换和数字传输的结合&#xff0c;它以迅速、准确、经济、有效的方式提供目前各种通信网络中现有的业务&#xff0c;而且将通信和数据处理结合起来&#xff0c;开创了…

html5 audio 获取播放时间,html5 audio 延时获取播放路径播放失败

为什么audio对象在延时1000毫秒之后就不能执行播放呢?歌曲的路径需要从数据库中获取&#xff0c;所以需要用ajax来交互&#xff0c;但是发现假如时间过长即使获取到路径也不能执行播放。为方便测试使用setTimeout来模拟自动播放音乐测试试试看能不能听到声音。(function () {v…

VOIP,PSTN,ISDN

近来在电视、杂志特集等展露头脚的「IP电话」&#xff0c;因其通话费用低廉而有口皆碑。IP电话利用的IP网络在互联网的世界里是众所周知的。互联网被认为基本上是免费的网络。接下来以此开放的技术和构想作为基础而登场的就是IP电话。IP电话与构成 所谓的IP电话 所谓的IP电话就…

2021高考成绩查询时间福州,福州2021高考填志愿入口

高考结束后学校和专业如何选择2021-06-07 20:19:16文/杨婷现在很多考生高考结束之后&#xff0c;不知道怎么选择学校和专业&#xff0c;下面小编为大家整理了相关内容&#xff0c;以供参考&#xff0c;一起来看看&#xff01;高考结束后学校和专业如何选择一、根据孩子兴趣来进…

svn在linux下的使用(svn命令行)ubuntu 删除 新增 添加 提交 状态查询 恢复

合并步骤&#xff1a;&#xff08;1&#xff09;先切换到分支&#xff1b;&#xff08;2&#xff09;svn merge trunk . &#xff08;3&#xff09;svn sw trunk &#xff08;4&#xff09;svn merge --reintegrate branch . svn merge http://59.251.189.152:8989/svn/ron/tru…

关于关闭office 2010中的OSPPSVC服务的方法

今天重装了系统,并安装了office 2010 VOL版,结果发现在使用word、Excel等程序时&#xff0c;系统同时打开了一个OSPPSVC的进程(是一个服务)&#xff0c;但是在word等程序关闭后,该进程不能关闭&#xff0c;仍在后台运行&#xff0c;让人感觉不舒服。通过查找发现&#xff1a; 文…

计算机组装与维护模拟测试题三答案,春季高考信息技术模拟题3(计算机组装与维修部分含答案)...

36.计算机硬件系统的核心部件是A&#xff0e;主板B&#xff0e;CPUC&#xff0e;内存D&#xff0e;硬盘 37.北桥芯片的功能不包括A&#xff0e;对CPU类型和主频的支持B&#xff0e;对ECC纠错的支持C&#xff0e;对内存类型和最大容量的支持D&#xff0e;对USB接口的支持 38.操作…

【原创】SqlServer 2005 BCP命令详解

一、命令详解 1.  将远程数据库数据导出到本地文件 EXEC master..xp_cmdshell bcp "sql查询语句" queryout 本地文件路径 -t"," -c -S服务器ip -U"用户名" -P"密码" 注意&#xff1a;在本机上执行的命令最终文件未必备份到本机&…

wince6下usb摄像头(UVC)使用指南

转自&#xff1a;http://hi.baidu.com/cahbb/blog/item/6d76093498fe0790a61e120e.html 在搭好了wince6的开发环境之后&#xff0c;下一步试验一下wince6下使用摄像头的方法。搜集了不少资料&#xff0c;从中学习了很多有用的东西&#xff0c;在这给记录下来&#xff0c;方便…

如何用计算机绘图画图,2018年《计算机绘图》考试试题及答案【完整版】.doc

2018年《计算机绘图》试题及答案【完整版】一、填空题1、CAD的常用图形输入设备有 、数字化仪、图形输入板、光笔、 等。鼠标键盘2、CAD系统的显示器有阴极射线管显示器、 显示器和等离子显示器。液晶显示器3、CAD的软件可分为 软件、支撑软件和 软件三个层次。系统软件、应用软…

使用SqlCommandBuilder

使用命令构造器添加行 View Code using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using System.Data.SqlClient;namespace PersistAddsBuilder {class Program{static void Main(string[] args){string connStri…

Asterisk权威指南/第一章 一场电话革命

当我们开始着手写一本Asterisk书的时候&#xff08;大概五年前&#xff09;&#xff0c;我们确信Asterisk将会从根本上改变通讯行业。今天&#xff0c;我们预言的这场革命几乎就要完成了。Asterisk现在是世界上最成功的PBX&#xff0c;并且是通讯行业的公认技术&#xff08;尽管…

html怎么导入js编辑,three.js怎么导入html

用户&#xff1a;骑士的素材火2016年11月18日webGL可以让我们在canvas上实现3D效果。而three.js是一款webGL框架&#xff0c;由于其易用性被广泛应用。如果你要学习webGL&#xff0c;抛弃那些复杂的原生接口从这款框架入手是一个不错的选择。博主目前也在学习three.js&#xff…

编程是一门实践性的科学

编程是一门实践性的科学&#xff0c;仅仅靠看书、看别人写的代码是远远不够的&#xff0c;因此&#xff0c;必须多做实践才行&#xff0c;只有通过不断的练习&#xff0c;大量的使用&#xff0c;才能做到更深的理解&#xff0c;掌握的更好&#xff01;转载于:https://www.cnblo…