IBATIS是一个类似于Hibernate的轻型后端框架,同样是基于ORM 的一个对象关系映射框架。IBATIS框架对于熟悉纯sql语句的程序原来说,应该是相当容易入门。
好吧废话不多讲了,来点真格的。
首先,你可以通过IBATIS的官方网:http://ibatis.apache.org/index.html,上面去看看。
下载ibatis的开发包。http://labs.renren.com/apache-mirror/ibatis/binaries/ibatis.java/ibatis-2.3.4.726.zip
然后你可以看里面的demo。然后自学看看。不过自己看的话,只是看不去自己真正的去写,不去一个一个的去测试,那你里面的配置就只知道其然,而不只其所以然。
所以看着demo,然后开始自己一个一个的测试,并理解把。
第一个新建一个项目,然后导入两个包,一个是ibaits包。一个是你连接数据的驱动jar包。
第二个就是配置你的conn.properties文件。(原本这里这里代码我是不冗余了在讲了,不过怕有些初学者不去看官网而直接看我这里的话,那么我考虑到这里我还是把代码给大家贴出来好了)
conn.properties
#Created by JInto - www.guh-software.de
#Tue Dec 08 16:51:48 CST 2009
#mysql
#pwd=root
#user=root
#driver=com.mysql.jdbc.Driver
#url=jdbc\:mysql\://127.0.0.1\:3306/test?useUnicode\=true&characterEncoding\=utf-8
#sql200
user=sa
pwd=sa
driver=com.microsoft.jdbc.sqlserver.SQLServerDriver
url=jdbc:microsoft:sqlserver://127.0.0.1:1433;databasename=ibatisetest
第三个就是配置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>
<!--
user=sa
pwd=sa
driver=com.microsoft.jdbc.sqlserver.SQLServerDriver
url=jdbc:microsoft:sqlserver://127.0.0.1:1433;databasename=ibatisetest
-->
<!--
pwd=root
user=root
driver=com.mysql.jdbc.Driver
url=jdbc\:mysql\://127.0.0.1\:3306/test?useUnicode=true&characterEncoding=utf-8
-->
<properties resource="conn.properties"/>
<!-- 1. 全局控制sqlMapClient的缓存 -->
<!-- 2. 全局控制运行时字节码增强,优化javabean的属性性能 -->
<!-- 3. 延迟加载 -->
<!-- 456.同时执行sql语句的最大线程数,通常大小是maxTransactions的10倍,并且总是大于maxTransactions和maxSessions的总和。减小这个值能够提高性能。-->
<!-- 7. 是否启动全局的sqlmap名字空间。如果启动则应用时,必须加上名字空间:queryForObject(sqlMap的名字空间.statementName) -->
<settings cacheModelsEnabled="true"
enhancementEnabled="true"
lazyLoadingEnabled="true"
errorTracingEnabled="true"
maxRequests="32"
maxSessions="10"
maxTransactions="5"
useStatementNamespaces="false" /> <!--这个节点是设置工程的总体性能,根据名称来设置 -->
<transactionManager type="JDBC" commitRequired="false">
<dataSource type="SIMPLE">
<property name="JDBC.Driver" value="${driver}"/>
<property name="JDBC.ConnectionURL" value="${url}"/>
<property name="JDBC.Username" value="${user}"/>
<property name="JDBC.Password" value="${pwd}"/>
</dataSource>
</transactionManager>
<sqlMap resource="com/mydomain/data/Account.xml"/>
<sqlMap resource="com/dk/user/User.xml"/>
</sqlMapConfig>
然后就是写测试UserBeen.java
package com.dk.user;
public class UseVO {
private int id;
private String name;
private int age;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
在配置user.XML
<?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="com.dk.user.UseVO"/>
<!--
<resultMap id="userResult" class="User">
<result property="id" column="uid"/>
<result property="name" column="uname"/>
<result property="age" column="uage"/>
</resultMap>
-->
<statement id="createUserTest">
create table usertest
(
uid int primary key identity(1,1),
uname varchar(20),
uage int
)
</statement>
<insert id="insertUser" parameterClass="User">
insert into usertest
(uname,uage)
values
(#name#,#age#)
</insert>
<select id="selectUser" resultClass="User">
select uid as id,uname as name,uage as age from usertest
</select>
<update id="updateUser" parameterClass="User">
update usertest set uname= #name#,uage=#age# where uid =#id#
</update>
<delete id="deleteUser" parameterClass="int">
delete from usertest where uid = #id#
</delete>
<select id="selectUserByName" parameterClass="java.lang.String" resultClass="User">
select * from usertest where uname like '%$name$%'
</select>
<select id="selectNoConfigResultMap" resultClass="User" remapResults="true" >
select uid ,uname,uage from usertest
</select>
<select id="selectUserById" parameterClass="int" resultClass="User" >
select uid as id ,uname as name,uage as age from usertest where uid =#id#
</select>
<statement id="dropUser" >
drop table usertest
</statement>
</sqlMap>
最后写UserDaoTest.JAVA
最后写UserDaoTest.JApackage com.dk.user;
import java.io.IOException;
import java.io.Reader;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
public class UserDaoTest {
/**
* @param args
*/
private static SqlMapClient sqlMapClient;
static {
try {
Reader reader = Resources.getResourceAsReader("SqlMapConfig.xml");
sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(reader);
if(sqlMapClient!=null){
System.out.println("ok");
}
} catch (IOException e) {
e.printStackTrace();
}
}
public static void createUserTest(){
try {
sqlMapClient.startTransaction();
int i = sqlMapClient.update("createUserTest");
sqlMapClient.commitTransaction();
System.out.println("update:\t"+i);
sqlMapClient.endTransaction();
System.out.println("创建Usertest成功");
} catch (SQLException e) {
e.printStackTrace();
}
}
public static void insertUser(UseVO user){
try {
sqlMapClient.insert("insertUser", user);
System.out.println("插入成功");
} catch (SQLException e) {
e.printStackTrace();
}
}
public static List<UseVO> selectUsers(){
List<UseVO> list = new ArrayList<UseVO>();
try {
list =sqlMapClient.queryForList("selectUser");
for(UseVO u:list){
System.out.println(u.getId());
System.out.println(u.getName());
System.out.println(u.getAge());
}
} catch (SQLException e) {
e.printStackTrace();
}
return list;
}
public static void updateUser(UseVO vo){
try {
sqlMapClient.startTransaction();
int i = sqlMapClient.update("updateUser", vo);
sqlMapClient.commitTransaction();
sqlMapClient.endTransaction();
System.out.println("i\t"+i);
} catch (SQLException e) {
e.printStackTrace();
}
}
public static List<UseVO> selectUserByName(String name){
List<UseVO> list = null;
try {
System.out.println("start");
list = sqlMapClient.queryForList("selectUserByName",name);
System.out.println(list.size());
for(UseVO u:list){
System.out.println("continue");
System.out.println(u.getAge());
System.out.println(u.getId());
System.out.println(u.getName());
}
System.out.println("over");
} catch (SQLException e) {
e.printStackTrace();
}
return list;
}
public static List<UseVO> selectNoConfigResultMap(){
List<UseVO> list = null;
try {
list = sqlMapClient.queryForList("selectNoConfigResultMap");
for(UseVO u:list){
System.out.println("continue");
System.out.println(u.getAge());
System.out.println(u.getId());
System.out.println(u.getName());
}
} catch (SQLException e) {
e.printStackTrace();
}
return list;
}
public static UseVO getUserById(int id){
UseVO vo = new UseVO();
try {
vo = (UseVO)sqlMapClient.queryForObject("selectUserById",id);
System.out.println(vo.getAge());
System.out.println(vo.getId());
System.out.println(vo.getName());
} catch (SQLException e) {
e.printStackTrace();
}
return vo;
}
public static void dorpUsetTable(){
try {
sqlMapClient.delete("dropUser");
System.out.println("drop ok");
} catch (SQLException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
//UserDaoTest dao = new UserDaoTest();
//UserDaoTest.createUserTest();
/* UseVO user = new UseVO();
user.setAge(21);
user.setName("bhdk");
UserDaoTest.insertUser(user);*/
/* UseVO vo = new UseVO();
vo.setId(2);
vo.setAge(122);
vo.setName("dddddd");
UserDaoTest.updateUser(vo);
UserDaoTest.selectUsers(); */
//UserDaoTest.selectUserByName("d");
//UserDaoTest.selectNoConfigResultMap();
//UserDaoTest.getUserById(2);
//UserDaoTest.selectUsers();
//UserDaoTest.dorpUsetTable();
//UserDaoTest.createUserTest();
}
}
OK 发布运行。这里还有一写东西我没有讲具体讲,现在只是将他运行起来,先看效果再说。
Ibatis入门(第二节)保证你能在1个小时内弄明白ibatis中的配置到底是个什么玩意,为什么你配置的时候,老是报错。
Ibatis入门(第二节): http://yekui.iteye.com/admin/blogs/732290
分享到:
相关推荐
ibatis ,入门例子
第1章 iBATIS的理念 2 1.1 一个结合了所有优秀思想的混合型解决方案 2 1.1.1 探索iBATIS的根源 3 1.1.2 理解iBATIS的优势 7 1.2 iBATIS适合应用在何处 10 1.2.1 业务对象模型 11 1.2.2 表现层 11 1.2.3 业务逻辑层 ...
MyBatis的前身就是iBatis , MyBatis使用XML描述符或注释将对象与存储过程或SQL语句耦合,将关系数据库与面向对象应用程序结合使用变得更加容易。支持定制化SQL、存储过程以及高级映射。
MyBatis的前身就是iBatis , MyBatis使用XML描述符或注释将对象与存储过程或SQL语句耦合,将关系数据库与面向对象应用程序结合使用变得更加容易。支持定制化SQL、存储过程以及高级映射。
MyBatis的前身就是iBatis , MyBatis使用XML描述符或注释将对象与存储过程或SQL语句耦合,将关系数据库与面向对象应用程序结合使用变得更加容易。支持定制化SQL、存储过程以及高级映射。
MyBatis的前身就是iBatis , MyBatis使用XML描述符或注释将对象与存储过程或SQL语句耦合,将关系数据库与面向对象应用程序结合使用变得更加容易。支持定制化SQL、存储过程以及高级映射。
(第一天)之Apache整合Tomcat (第二天)之apache tomcat https应用 (第三天)之apache性能调优 (第四天)之Tomcat性能调优-让小猫飞奔 (第五天)之tomcat集群-群猫乱舞 (第六天)之漫谈基于数据库的权限系统的...
MyBatis的前身叫iBatis,本是apache的一个开源项目, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis...这篇文章主要介绍了MyBaits入门第一篇之MyBaits环境搭建,需要的朋友参考下
第 1章 STRUTS2入门................................................................................................................................................3 第 2章STRUTS2晋级.....................
第一天: 1、Mybatis的介绍 2、Mybatis的入门 a)使用jdbc操作数据库存在的问题 b)Mybatis的架构 c)Mybatis的入门程序 3、Dao的开发方法 a)原始dao的开发方法 b)接口的动态代理方式 SqlMapConfig.xml文件说 2.Mybatis...
MyBatis的前身就是iBatis , MyBatis使用XML描述符或注释将对象与存储过程或SQL语句耦合,将关系数据库与面向对象应用程序结合使用变得更加容易。支持定制化SQL、存储过程以及高级映射。
一个一个上传太累了,又因为权限限制,我尽可能多的放一起上传。书籍包括{ Head First Java 中文高清版.pdf Head First Servlet JSP(清晰中文版).PDF Head First 设计模式.pdf HttpClient入门.pdf ibatis开发指南....
1. 现阶段,你可以直接建立java 工程,但一般都是开发web项目,这个系列教程最后也是web的,所以一开始就建立web工程。 2. 将 mybatis-3.2.0-SNAPSHOT.jar,mysql-connector-java-5.1.22-bin.jar 拷贝到 web工程的...
但是IBatisNet也存在许多几个不足之处,有些还是先天因素造成的: <br>第一,数据库可移植性差。IBatisNet获得高性能与灵活性也是付出代价的,它牺牲了数据库可移植性:由于编写SQL模板不得不用到数据库产品的...
但是IBatisNet也存在许多几个不足之处,有些还是先天因素造成的: <br>第一,数据库可移植性差。IBatisNet获得高性能与灵活性也是付出代价的,它牺牲了数据库可移植性:由于编写SQL模板不得不用到数据库产品的...
xml ...主要是进行数据库的创建以及交互,讲解注释和XML定义并进行首页的开发,两种方式书写sql代码,第一种方式是在dao层的接口上利用@Mapper、@Insert方法注解在.java文件上书写sql,优点是方便,快
但是IBatisNet也存在许多几个不足之处,有些还是先天因素造成的: <br>第一,数据库可移植性差。IBatisNet获得高性能与灵活性也是付出代价的,它牺牲了数据库可移植性:由于编写SQL模板不得不用到数据库产品的...
我们的Hello World程序是你开发基于Struts2框架程序的第一步.这里我们会提供循序渐进的教程来开发基于Struts2框架的Hello World程序. 教程包含基本的步骤像创建目录结构,建立build.xml文件来使用Ant构建工具创建程序...