Mybatis环境搭建及简单入门
来源:互联网 发布:js获取元素对象移除 编辑:程序博客网 时间:2024/06/07 02:07
最近做项目需要使用ibatis(已改名为Mybatis),以前也没接触过,所以也是网上学习,但是网上很多资料很乱,所以自己在简单成功后,写篇文章,帮助解决那些后面要学习的童鞋,本意在于写的清楚完善,不偷懒过程,以避免不必要的麻烦。“对自己的懒惰,就是对别人看你文章学习的不负责任。”O(∩_∩)O
1 基本介绍
iBatis是一款使用方便的数据访问工具,也可作为数据持久层的框架。和ORM框架(如Hibernate)将数据库表直接映射为Java对象相比,iBatis是将SQL语句映射为Java对象。相对于全自动SQL的Hibernate,iBatis允许你对SQL有完全控制权,可以视为半自动的数据访问工具。
概念什么的,自己去google下吧,MyBatis是个持久层框架,另外的著名的也有 hibernate。[区别:http://zhidao.baidu.com/question/99674664.html]
ibatis经常和MVC框架一起用,本人就是Spring MVC + Mybatis。[MVC框架、持久层框架:http://zhidao.baidu.com/question/250857885.html]
2 为什么要用
不管是iBatis还是Hibernate,都作为访问数据库的工具,它们必然基于JDBC而来,目的解决是JDBC程序开发的繁琐性和代码的冗余性(如加载驱动,建立连接,初始化语句对象,执行数据库操作,返回结果,关闭各个对象这一重复且无技术含量的过程)。
3 JDBC Demo
先看下demo目录,注意JDBC DEMO和ibatis DEMO我放在同一个工程了。请忽略solr,和本工程无关,我本人用于测试Solr的。
首先解决JDBC方式,之后介绍ibatis方式。
3.1 数据库Oracle
使用的是scott/tiger示例EMP[别告诉我,你连这个都忘了,。。。cmd->sqlplus scott/tiger SQL>select * from emp;]
3.2 Java代码
model代码,用于描述数据库对象
package jdbc.model;public class User implements java.io.Serializable {private Integer empNO;private String ename;private String job;private String mgr;private String sal;public Integer getEmpNO() {return empNO;}public void setEmpNO(Integer empNO) {this.empNO = empNO;}public String getEname() {return ename;}public void setEname(String ename) {this.ename = ename;}public String getJob() {return job;}public void setJob(String job) {this.job = job;}public String getMgr() {return mgr;}public void setMgr(String mgr) {this.mgr = mgr;}public String getSal() {return sal;}public void setSal(String sal) {this.sal = sal;}@Overridepublic String toString() {return "EMP [empNO=" + empNO + ", ename=" + ename + ", job="+ job + ", mgr=" + mgr + ", sal=" + sal+ "]";}}要访问数据库,首先做些基础准备。写一个简单的数据库访问工具类,配置信息从属性文件[jdbc.properties]中读取,比较方便。
jdbc.properties
jdbc.driverClassName=oracle.jdbc.driver.OracleDriverjdbc.url=jdbc:oracle:thin:@localhost:1521:ORCLjdbc.username=scottjdbc.password=tiger工具类,从jdbc.properties读取数据库信息,并连接数据库。
package jdbc.util;import java.sql.*;import java.util.ResourceBundle;public class DBUtil { private static Connection conn = null; private static String url = "jdbc:oracle:thin:@localhost:1521:ORCL";//驱动程序名:@主机名/IP:端口号:数据库实例名 private static String driver = "oracle.jdbc.driver.OracleDriver"; private static String userName = "scott"; private static String passWord = "tiger";public DBUtil() {}public static Connection getConnection() {try {Class.forName(driver);//DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());//实例化驱动程序类conn = DriverManager.getConnection(url, userName, passWord);} catch (Exception e) {e.printStackTrace();}return conn;}}Demo测试
package jdbc;import java.sql.*;import jdbc.model.User;import jdbc.util.DBUtil;public class JDBCDemo {public static User getUser(int id) throws SQLException {User user = null;String sql = "select * from EMP where EMPNO=?";Connection conn = null;PreparedStatement pstmt = null;ResultSet rs = null;try {conn = DBUtil.getConnection();pstmt = conn.prepareStatement(sql);pstmt.setInt(1, id);rs = pstmt.executeQuery();while (rs.next()) {user = new User();user.setEmpNO(rs.getInt("EMPNO"));user.setEname(rs.getString("ENAME"));user.setJob(rs.getString("JOB"));user.setMgr(rs.getString("MGR"));user.setSal(rs.getString("SAL"));}} finally {try {if (rs != null) {rs.close();}} finally {try {if (pstmt != null) {pstmt.close();}} finally {if (conn != null) {conn.close();}}}}return user;}public static void main(String[] args) throws Exception {System.out.println(getUser(7369));}}这是一个最朴素的JDBC应用程序,所有操作必须人为显式完成,如有遗漏可能就会对程序造成影响,比如连接不释放,数据更新操作时使用事务。不可否认的是,JDBC直接操作数据库的效率是最高的,一旦使用了持久层的框架,会在效率上造成一定影响。这点要权衡利弊,做出决定。
4 ibstis DEMO
目前最新的Mybatis是mybatis-3.2.0.jar,但是由于网上没有最新的教程,而且新mybatis由于拆分了很细的包,对于新手不知道该用哪些,所以就用了mybatis-2.3.5.jar。4.1 数据库
数据库的配置信息还是使用jdbc.properties文件即可,统一管理。
4.2 Java代码
iBatis的配置文件是SqlMapConfig.xml,这里面需要声明数据库连接的属性信息,数据源配置信息,映射文件等信息。
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-config-2.dtd"><sqlMapConfig><properties resource="jdbc.properties" /><transactionManager type="JDBC"><dataSource type="SIMPLE"><property name="JDBC.Driver" value="${jdbc.driverClassName}" /><property name="JDBC.ConnectionURL" value="${jdbc.url}" /><property name="JDBC.Username" value="${jdbc.username}" /><property name="JDBC.Password" value="${jdbc.password}" /></dataSource></transactionManager><sqlMap resource="ibatis/resources/User.xml" /></sqlMapConfig>配置好iBatis后,我们就要进行数据库操作了,当然iBatis本身的SQL语句也是写在映射文件中的,那么就要看User.xml了。 getUsers根据id获取数据,getAllUsers获取所有,看代码就懂了。
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd"><sqlMap namespace="User"><typeAlias alias="User" type="ibatis.model.User" /><select id="getUsers" resultClass="User">select * from EMPwhere EMPNO=#id#</select><select id="getAllUsers" resultClass="User">select * from EMP</select></sqlMap>typeAlias标签是设置别名用的,这里我们使用了一个Bean叫做User,声明别名后,在文件的后续部分可以直接使用别名而不用再给出完整类型了,非常方便,如select标签中的resultClass属性。
这个配置我们使用的是Bean作为返回的结果类型,当然也可以使用Map,非常灵活。Select的id是标识该SQL语句的标识符,要在应用程序中使用到,必须唯一。Select标签体内的部分就是SQL语句了,当然这里是最简单的示例。
最后就是应用程序,写法也很简单。首先是加载iBatis的配置文件,然后使用SqlMapClient接口提供的方法进行数据操作。
package ibatis;import ibatis.model.User;import java.io.*;import java.sql.SQLException;import java.util.List;import com.ibatis.common.resources.Resources;import com.ibatis.sqlmap.client.*;public class iBatisDemo {public static void main(String[] args) throws IOException, SQLException {String config = "ibatis/SqlMapConfig.xml";Reader reader = Resources.getResourceAsReader(config);SqlMapClient sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);//Object o =new Object();List<User> list = sqlMap.queryForList("getUsers",7499);for (User user : list) {System.out.println(user);}System.out.println("===============================================================");List<User> list1 = sqlMap.queryForList("getAllUsers");for (User user : list1) {System.out.println(user);}}}这样,就结束了,下面是输出结果
EMP [empNO=7499, ename=ALLEN, job=SALESMAN, mgr=7698, sal=1600]===============================================================EMP [empNO=8900, ename=lihao, job=it, mgr=7902, sal=20000]EMP [empNO=7369, ename=SMITH, job=CLERK, mgr=7902, sal=800]EMP [empNO=7499, ename=ALLEN, job=SALESMAN, mgr=7698, sal=1600]EMP [empNO=7521, ename=WARD, job=SALESMAN, mgr=7698, sal=1250]EMP [empNO=7566, ename=JONES, job=MANAGER, mgr=7839, sal=2975]EMP [empNO=7654, ename=MARTIN, job=SALESMAN, mgr=7698, sal=1250]EMP [empNO=7698, ename=BLAKE, job=MANAGER, mgr=7839, sal=2850]EMP [empNO=7782, ename=CLARK, job=MANAGER, mgr=7839, sal=2450]EMP [empNO=7788, ename=SCOTT, job=ANALYST, mgr=7566, sal=3000]EMP [empNO=7839, ename=KING, job=PRESIDENT, mgr=null, sal=5000]EMP [empNO=7844, ename=TURNER, job=SALESMAN, mgr=7698, sal=1500]EMP [empNO=7876, ename=ADAMS, job=CLERK, mgr=7788, sal=1100]EMP [empNO=7900, ename=JAMES, job=CLERK, mgr=7698, sal=950]EMP [empNO=7902, ename=FORD, job=ANALYST, mgr=7566, sal=3000]EMP [empNO=7934, ename=MILLER, job=CLERK, mgr=7782, sal=1300]
- Mybatis环境搭建及简单入门
- Mybatis环境搭建及简单入门
- mybatis快速入门及环境搭建
- 【MyBatis】3:MyBatis环境搭建及入门程序示例
- MyBatis环境搭建入门
- Mybatis简单搭建环境
- myBatis搭建环境简单介绍
- mybatis入门学习,mybatis环境搭建
- MyBatis(简介及环境搭建)
- Active MQ入门 搭建环境及简单的 代码
- MyBatis环境配置及入门
- MyBatis学习:基础环境搭建与入门
- Flex入门及环境搭建
- hive环境搭建及入门
- mybatis 环境搭建和简单CRUD
- 【Mybatis】环境搭建和简单实例
- MyBatis学习笔记(一)----简单的环境搭建及测试Demo
- MyBatis 环境搭建及小试
- VS2010 VC Project的dafault Include设置
- 再一次决心
- iscsi 挂载网络存储设备
- SSIS使用中的问题点记录
- Java的抽象类与抽象方法
- Mybatis环境搭建及简单入门
- linux 环境下java调用matlab小结
- springside出现Description Resource Path Location Type
- GNU ARM汇编伪操作(Directives) 命令集
- 客户端如何设置delegation
- 清除重建图标缓存
- Spring Security 3.1自定义登录
- MFC的ADO实例(基于VC2012对话框实例)
- IT项目经理应该做什么
原创粉丝点击
热门IT博客
热门问题
老师的惩罚
人脸识别
我在镇武司摸鱼那些年
重生之率土为王
我在大康的咸鱼生活
盘龙之生命进化
天生仙种
凡人之先天五行
春回大明朝
姑娘不必设防,我是瞎子
衬衣袖子长了怎么办
裤子的带子掉怎么办
裤绳出来了怎么办
运动裤带子掉了怎么办
与网友见面被骗怎么办
自残的人该怎么办
映像文件被锁定怎么办
孩子误吞水银怎么办
狗狗打喷嚏咳嗽怎么办
狗狗有点打喷嚏怎么办
狗狗总是打喷嚏怎么办
网线接口坏了怎么办
报社倒闭了员工怎么办
cad字体出现问号怎么办
工人不好好干活怎么办
被城管下通知书怎么办
20人小型婚礼怎么办
客厅只有6平米怎么办
农村建冷库停电怎么办
植皮后疤痕溃烂怎么办
下巴长羊胡子怎么办
激光后皮肤变黑怎么办
怀孕当月吃药了怎么办
qq群视频打不开怎么办
ppt播放不能翻页怎么办
qq群封了怎么办
忘记建行卡号怎么办
晚上睡觉胡思乱想睡不着怎么办
抑郁害怕不会好怎么办
总是怕这怕那的怎么办
强迫症反复检查怎么办
特别害怕丢东西怎么办
总感觉自己有病怎么办
有广场恐惧症怎么办
感觉眼里有东西怎么办
鼻子上有白头怎么办
帮别人干活受伤怎么办
给私人干活受伤怎么办
考试挂科了怎么办
大学考试挂科怎么办
哺乳期奶水有血怎么办