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,一经查实,立即删除!

相关文章

VOIP,PSTN,ISDN

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

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…

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

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

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

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

使用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架构

Asterisk和其他传统的PBX完全不同&#xff0c;因为Asterisk的拨号计划以同样的方式处理所有的入局信道&#xff08;incoming channels&#xff09;。 传统的PBX在逻辑上区分工作站信道&#xff08;连接电话机&#xff09;和电话局信道&#xff08;连接到外部世界&#xff09;。…

x-lite asterisk 成功实现视频通话

首先&#xff0c;在此感谢asterisk协会的各位大牛们&#xff0c;没有他们的帮助&#xff0c;我也不可能在这么短的时间内实现&#xff0c;x-liteasterisk音视频通话。在此将实现的过程记录如下&#xff0c;分享给asterisk的爱好者们。 1. 修改asterisk服务器的sip.conf文件&…

axure 链接html文件,通过WuliHub免费托管原型Axure HTML文件

产品经理常用的工具就是Axure&#xff0c;通过Axure把想法转化成包含交互的原型线框图。在工作中&#xff0c;我们用HTML文件传递不仅会遇到某些浏览器无法打开的问题&#xff0c;而且没有办法及时更新内容。所以&#xff0c;介绍一种简单的并且免费的方式来方便管理HTML原型&a…

Asterisk SIP连通测试(X-Lite eyebeam)

Step1:设置 sip.conf rootUbuntu:/etc/asterisk# vim sip.conf [general] //类似与全局变量 context default srvlookup yes //DNS SRV记录查询 [111] secretaaa //密码&#xf…

html多出的空白页怎么删除,word多出一页空白页怎么删除,这4个方法总有一个能解决,真实挂机网赚项目...

信赖大多数人都碰到过这样的难题&#xff0c;在编辑Word文档的时刻&#xff0c;是不是在中心或者是最后一页&#xff0c;莫名其妙的泛起空白页&#xff0c;而且这个空白页怎么删都删不掉。不要着急&#xff0c;今天就给人人分享4种简朴又好用的解决方式&#xff0c;总有一种能让…

linq to json for sl

一.Linq to JSON是用来干什么的?Linq to JSON是用来操作JSON对象的.可以用于快速查询,修改和创建JSON对象.当JSON对象内容比较复杂,而我们仅仅需要其中的一小部分数据时,可以考虑使用Linq to JSON来读取和修改部分的数据而非反序列化全部. 二.创建JSON数组和对象在进行Linq to…

编程是一种艺术创作

软件正在吞噬世界 “软件正在吞噬世界。”——马克 安德森 马克 • 安德森 在新一轮的信息技术革命中&#xff0c;我们已经见证&#xff0c;软件对社会生产的方方面面&#xff0c;产生了深刻的影响&#xff0c;它们侵入并颠覆了已经建立起来的行业架构。越来越多的大企业和行业…

loss值多少才算收敛_一个家庭一年要存多少钱才算正常?国家统计局给出“答案”...

阅读本文前&#xff0c;请您先点击上面的蓝色字体&#xff0c;再点击“关注”&#xff0c;这样您就可以继续免费收到最新文章了。每天都有分享。完全是免费订阅&#xff0c;请放心关注。免责声明&#xff1a;本文来源于网络&#xff0c;如有侵权请联系作者删除。“手里有粮&…

郑州升达经贸管理学院计算机专业学费,郑州升达经贸管理学院学费

郑州升达经贸管理学院学费2020-07-10 13:17:19文/叶丹2020年郑州升达经贸管理学院文科类本科专业学费15000元/年&#xff1b;郑州升达经贸管理学院理科类本科专业学费16000元/年。一般情况下&#xff0c;艺术类专业学费比普通专业高一些。郑州升达经贸管理学院依据省(市区)教育…

不愿意和别人打交道_参加完孩子学校的运动会,宝妈吐槽贫富圈子差距大,不适合打交道...

文|文儿我有一个发小&#xff0c;蛮有钱的&#xff0c;前两天参加完孩子的运动会&#xff0c;气呼呼地说“穷人就爱斤斤计较&#xff0c;千万不要轻易地跟他们打交道”。这是怎么回事呢&#xff1f;原来&#xff0c;我的这位发小&#xff0c;今年孩子转学上了小学二年级&#x…

html 遍历div内check,vue+element中checkbox 实现遍历分组全选

1、html部分style"margin-left: 30px":indeterminate"item.isIndeterminate"v-model"item.isCheck"change"checkTitle(item.isCheck, index)">全选>v-model"item.checkedData"change"checkItem(item.checkedData…

homepod换wifi网络_如何实现短租网络自由,不必换房断网

对于在异地工作的人来说&#xff0c;租房一直是头疼的问题&#xff0c;要避开黑中介&#xff0c;房租不能太贵&#xff0c;还要离公司近&#xff0c;最好单间或者舍友不能太奇葩&#xff0c;要满足以上条件实在是太难了。其实最核心的问题是房租&#xff0c;押一付三&#xff0…

如何升级浏览器_手把手教你申请IOS14 Beta升级方法

就在最近苹果公司正式开放了IOS14 Public Beta 2还不了解IOS14的小伙伴参考一只废材&#xff1a;WWDC2020 之 IOS14 篇&#xff08;内含升级方法和个人体验参考&#xff09;​zhuanlan.zhihu.com本期废材就来教大家如何申请升级操作方法简单易懂又官方本方法每次发布版本更新都…

树的直径,树的最长路dp思想

dp一直弱死了&#xff0c;树型dp很多基本的题都不会&#xff0c;最近在刷树型dp的题&#xff0c;把关于树的最长路的思想总结一下&#xff1a; 树的直径&#xff1a;树中距离最远的两点间的距离。 下面说几道题&#xff1a; hdu 2196&#xff1a;对于树上&#xff08;双向边&am…

linux sd卡 读写速度测试_铠侠(原东芝存储)SD卡,大容量存储时代,高速读写选择...

作为一个经常出去旅行的旅游博主&#xff0c;在旅行过程中&#xff0c;还是有很多拍摄的需求。无论是存储美图&#xff0c;还是视频&#xff0c;一个大容量、安全可靠的储存卡还是很有必要的。这既可以缓解因为容量不够&#xff0c;频繁导数据的尴尬。又不会因为数据丢失&#…