Ⅰ 、Ibatis项目机构

打开资源包,可以看到里面有一个simple_exzample的文件夹,在MyEclipse8.5中新建一个JAVA项目,将刚才的文件夹中内容复制到项目SRC下,这样的话呢,可以看到这样一个目录

aaarticlea/png;base64,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" alt="" width="357" height="229" />

Ⅱ、Ibatis的SQL语句配置类MySqlMapConfig.xml

<span style="font-size: medium;"><?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>
<transactionManager type="JDBC" commitRequired="false">
<dataSource type="SIMPLE">
<property name="JDBC.Driver" value="com.mysql.jdbc.Driver"/>
<property name="JDBC.ConnectionURL" value="jdbc:mysql://127.0.0.1:3306/ibatis"/>
<property name="JDBC.Username" value="root"/>
<property name="JDBC.Password" value="root"/>
</dataSource>
</transactionManager>
<sqlMap resource="com/mydomain/data/Employee.xml"/> </sqlMapConfig>
</span>

使用的是MySQL数据库,所以要添加数据库驱动包,还有ibatis核心包,在看看数据库表该怎么建立,这得查看下Employee.xml了

Ⅲ、Employee.xml

<span style="font-size: medium;"><?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="Employee"> <typeAlias alias="Employee" type="com.mydomain.domain.Employee"/> <resultMap id="AccountResult" class="Employee">
<result property="id" column="ACC_ID"/>
<result property="firstName" column="ACC_FIRST_NAME"/>
<result property="lastName" column="ACC_LAST_NAME"/>
<result property="emailAddress" column="ACC_EMAIL"/>
</resultMap> <select id="selectAllAccounts" resultMap="AccountResult">
select * from Employee
</select> <select id="selectAccountById" parameterClass="int" resultClass="Employee">
select
ACC_ID as id,
ACC_FIRST_NAME as firstName,
ACC_LAST_NAME as lastName,
ACC_EMAIL as emailAddress
from Employee
where ACC_ID = #id#
</select> <insert id="insertAccount" parameterClass="Employee">
insert into Employee (
ACC_FIRST_NAME,
ACC_LAST_NAME,
ACC_EMAIL
)values (
#firstName#, #lastName#, #emailAddress#
)
</insert> <update id="updateAccount" parameterClass="Employee">
update Employee set
ACC_FIRST_NAME = #firstName#,
ACC_LAST_NAME = #lastName#,
ACC_EMAIL = #emailAddress#
where
ACC_ID = #id#
</update> <delete id="deleteAccountById" parameterClass="int">
delete from Employee where ACC_ID = #id#
</delete> </sqlMap></span>

上面的<ResultMap>标签中有指定每个Account属性对应的数据库的列名,所以就新建数据库了
 这样数据建立完成后,我们就可以测试了,这回就用到了SimpleExample.java类了

Ⅳ、SimpleExample.java

package com.mydomain.data;

import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
import com.ibatis.common.resources.Resources;
import com.mydomain.domain.Account; import java.io.Reader;
import java.io.IOException;
import java.util.List;
import java.sql.SQLException; public class SimpleExample { private static SqlMapClient sqlMapper; static {
try {
Reader reader = Resources.getResourceAsReader("com/mydomain/data/MySqlMapConfig.xml");
sqlMapper = SqlMapClientBuilder.buildSqlMapClient(reader);
reader.close();
} catch (IOException e) {
throw new RuntimeException("Something bad happened while building the SqlMapClient instance." + e, e);
}
} public static List selectAllAccounts () throws SQLException {
return sqlMapper.queryForList("selectAllAccounts");
} public static Account selectAccountById (int id) throws SQLException {
return (Account) sqlMapper.queryForObject("selectAccountById", id);
} public static void insertAccount (Account account) throws SQLException {
sqlMapper.insert("insertAccount", account);
} public static void updateAccount (Account account) throws SQLException {
sqlMapper.update("updateAccount", account);
} public static void deleteAccount (int id) throws SQLException {
sqlMapper.delete("deleteAccountById", id);
} }

像上面的增删改查中用到的代替SQL语句的映射KEY,也是可以加上相应的XML文件的配置名称的,如:return sqlMapper.queryForList("Employee.selectAllAccounts")那么这个Account就是Account.xml的名称了
真正想看到测试结果得另写个JUNIT测试类,添加junit的jar包,这里我写了MyTest.java

Ⅴ、MyTest.java

package com.mydomain.data;
import java.sql.SQLException;
import java.util.Arrays;
import java.util.Collections;
import java.util.List; import org.junit.Test; import com.mydomain.domain.Account; public class MyTest {
@Test
public void selectAllAccounts(){
try {
List list=SimpleExample.selectAllAccounts();
System.out.println(Arrays.toString(list.toArray()));
} catch (SQLException e) {
e.printStackTrace();
}
} public void selectAccountById(){
try {
Account account=SimpleExample.selectAccountById(1);
System.out.println(account);
} catch (SQLException e) {
e.printStackTrace();
}
} public void insertAccount(){
Account account=new Account();
account.setFirstName("tom");
account.setLastName("jam");
account.setEmailAddress("china");
try {
SimpleExample.insertAccount(account);
} catch (SQLException e) {
e.printStackTrace();
}
} public void updateAccount(){
try {
Account account=SimpleExample.selectAccountById(2);
account.setFirstName("gates");
SimpleExample.updateAccount(account);
} catch (SQLException e) {
e.printStackTrace();
}
} public void deleteAccount(){
try {
SimpleExample.deleteAccount(1);
} catch (SQLException e) {
e.printStackTrace();
}
} }

Ⅵ、顺便介绍下MyBatis

MyBatis来源于iBATIS,iBATIS是一个由Clinton Begin在2001年发起的开放源代码项目,iBATIS一词来源于“internet”和“abatis”的组合。该项目最初侧重于密码软件的开发,现在是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO),它是著名的ORM开发框架,分为Java和.NET版本,有着众多的追随者。

iBATIS更名为MyBatis并迁移到Google Code,此次项目迁移后,将启用新的网站http://www.mybatis.org/,由于目前只是改了名字,因此仍然可直接浏览iBatis的文档。
MyBatis开发团队希望脱离Apache而独立发展,并保证不会修改授权协议(Apache License)、代码完全兼容、包名不会更改、也不会删除 Apache站上的任何相关资源。改名后的第一次版本MyBatis 3.0.1已经发布,基于iBatis 3.0版本,该版本非常稳定,已经有很多用户使用了数周时间,修复了一些小bug。欲下载 MyBatis 3.0.1请到它新的网站http://www.mybatis.org/。 目前版本是3.0.2

【ibatis】入门讲例的更多相关文章

  1. Ibatis入门基本语法(转) good

    Ibatis入门基本语法 一个项目中在写ibatis中的sql语句时,where user_id in (#user_id_list# ), 运行时总是不行,后来上网查了查,才知道这里不该用#,而应该 ...

  2. 一个简单的iBatis入门例子

    一个简单的iBatis入门例子,用ORACLE和Java测试 目录结构: 1.导入iBatis和oracle驱动. 2.创建类Person.java package com.ibeats;import ...

  3. Shiro官方快速入门10min例子源码解析框架2-Session

    Shiro自身维护了一套session管理组件,它可以独立使用,并不单纯依赖WEB/Servlet/EJB容器等环境,使得它的session可以任何应用中使用. 2-Session)主要介绍在quic ...

  4. 【OpenFOAM】——OpenFOAM入门算例学习

    1  明确目标——为啥费老大劲儿学习OpenFOAM 学习OpenFOAM主要出于课题需要,希望实现以下几个目标: l  [ ]学会用SnappyHexMesh生成高质量网格: l  [ ]学习使用O ...

  5. Spring Boot入门样例-001-Java和Maven安装配置

    Spring Boot入门样例-001-Java和Maven安装配置 本文说明Java和Maven在windows下的安装和配置 前言 本Spring Boot入门样例准备工作参考: Spring B ...

  6. DFS 深搜专题 入门典例 -- 凌宸1642

    DFS 深搜专题 入门典例 -- 凌宸1642 深度优先搜索 是一种 枚举所有完整路径以遍历所有情况的搜索方法 ,使用 递归 可以很好的实现 深度优先搜索. 1 最大价值 题目描述 ​ 有 n 件物品 ...

  7. jbpm入门样例

    1.      jBPM的简介 jBPM是JBOSS下的一个开源java工作流项目,该项目提供eclipse插件,基于Hibernate实现数据持久化存储.    參考 http://www.jbos ...

  8. 转载一篇将C/C++ 与lua混合使用入门讲的比较好的文章

    转自 http://www.open-open.com/home/space-6246-do-blog-id-1426.html Lua是一个嵌入式的脚本语言,它不仅可以单独使用还能与其它语言混合调用 ...

  9. Ibatis入门基本语法

    1.       Ibatis是开源软件组织Apache推出的一种轻量级的对象关系映射(ORM)框架,和Hibernate.Toplink等在java编程的对象持久化方面深受开发人员欢迎. 对象关系映 ...

随机推荐

  1. HttpInvokerUtils

    package com.sprucetec.tms.utils; import org.slf4j.Logger;import org.slf4j.LoggerFactory; import java ...

  2. Linux巩固记录(8) Hbase shell 基本使用

    继续前几篇内容,讲解hbase基本使用 1.进入hbase shell: hbase有很多种操作方式,比如shell,java客户端,webUI等,可以直接输入hbase进行提示 [root@mast ...

  3. MySQL赋权

    MySQL 赋予用户权限命令的简单格式可概括为:grant 权限 on 数据库对象 to 用户 一.grant 普通数据用户,查询.插入.更新.删除 数据库中所有表数据的权利.grant select ...

  4. 开发ASP.NET MVC 在线录音录像(音视频录制并上传)

    最近有个在线招聘录音的开发需求,需要在招聘网站上让招聘者上传录音和视频. 找到两个不错的javascript开源,可以在除了IE以外的浏览器运行. https://github.com/mattdia ...

  5. 如何使用gradle打jar包

    1.进入工程目录,输入./gradlew,如显示"... build success" 则表示当前目录下gradle可用:如当前目录下无gradle,则在线下载 .. 2.输入./ ...

  6. odoo开发笔记 -- wkhtmltox打印不显示中文 --ubuntu字体安装

    wkhtmltox 是一个开源的将网页内容转换成PDF的软件包,常嵌套在网页页面里边做打印功能. 以微软雅黑字体为例(其他的宋体.黑体等点阵字体都一样的),我们的雅黑字体文件是:Yahei.ttf(放 ...

  7. 【Canal源码分析】TableMetaTSDB

    这是Canal在新版本引入的一个内容,主要是为了解决由于历史的DDL导致表结构与现有表结构不一致,导致的同步失败的问题.采用的是Druid和Fastsql,来记录表结构到DB中,如果需要进行回滚时,得 ...

  8. JDK并发包总结

    本文主要介绍jdk中常用的同步控制工具以及并发容器, 其结构如下: 同步控制工具类 ReentrantLock 简而言之, 就是自由度更高的synchronized, 主要具备以下优点. 可重入: 单 ...

  9. Hadoop2源码分析-Hadoop V2初识

    1.概述 在完成分析Hadoop2源码的准备工作后,我们进入到后续的源码学习阶段.本篇博客给大家分享,让大家对Hadoop V2有个初步认识,博客的目录内容如下所示: Hadoop的渊源 Hadoop ...

  10. js便签笔记(9)——解读jquery源码时记录的一些知识点

    近来一直利用业余时间在看jquery2.1.1源码,大约看了两千行了.平时看的时候,做了一些笔记,贴出来分享. 1. Array.prototype.slice.call 可以将伪数组转化为真正的数组 ...