【ibatis】入门讲例
Ⅰ 、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】入门讲例的更多相关文章
- Ibatis入门基本语法(转) good
Ibatis入门基本语法 一个项目中在写ibatis中的sql语句时,where user_id in (#user_id_list# ), 运行时总是不行,后来上网查了查,才知道这里不该用#,而应该 ...
- 一个简单的iBatis入门例子
一个简单的iBatis入门例子,用ORACLE和Java测试 目录结构: 1.导入iBatis和oracle驱动. 2.创建类Person.java package com.ibeats;import ...
- Shiro官方快速入门10min例子源码解析框架2-Session
Shiro自身维护了一套session管理组件,它可以独立使用,并不单纯依赖WEB/Servlet/EJB容器等环境,使得它的session可以任何应用中使用. 2-Session)主要介绍在quic ...
- 【OpenFOAM】——OpenFOAM入门算例学习
1 明确目标——为啥费老大劲儿学习OpenFOAM 学习OpenFOAM主要出于课题需要,希望实现以下几个目标: l [ ]学会用SnappyHexMesh生成高质量网格: l [ ]学习使用O ...
- Spring Boot入门样例-001-Java和Maven安装配置
Spring Boot入门样例-001-Java和Maven安装配置 本文说明Java和Maven在windows下的安装和配置 前言 本Spring Boot入门样例准备工作参考: Spring B ...
- DFS 深搜专题 入门典例 -- 凌宸1642
DFS 深搜专题 入门典例 -- 凌宸1642 深度优先搜索 是一种 枚举所有完整路径以遍历所有情况的搜索方法 ,使用 递归 可以很好的实现 深度优先搜索. 1 最大价值 题目描述 有 n 件物品 ...
- jbpm入门样例
1. jBPM的简介 jBPM是JBOSS下的一个开源java工作流项目,该项目提供eclipse插件,基于Hibernate实现数据持久化存储. 參考 http://www.jbos ...
- 转载一篇将C/C++ 与lua混合使用入门讲的比较好的文章
转自 http://www.open-open.com/home/space-6246-do-blog-id-1426.html Lua是一个嵌入式的脚本语言,它不仅可以单独使用还能与其它语言混合调用 ...
- Ibatis入门基本语法
1. Ibatis是开源软件组织Apache推出的一种轻量级的对象关系映射(ORM)框架,和Hibernate.Toplink等在java编程的对象持久化方面深受开发人员欢迎. 对象关系映 ...
随机推荐
- SQL SERVER的锁机制(四)——概述(各种事务隔离级别发生的影响)
六.各种事务隔离级别发生的影响 修改数据的用户会影响同时读取或修改相同数据的其他用户.即这些用户可以并发访问数据.如果数据存储系统没有并发控制,则用户可能会看到以下负面影响: · 未提交的依赖关系(脏 ...
- bootstrap基础学习小记(三)网格简介
网格系统:网格系统的实现原理非常简单,仅仅是通过定义容器大小,平分12份(也有平分成24份或32份,但12份是最常见的),再调整内外边距,最后结合媒体查询,就制作出了强大的响应式网格系统.Bootst ...
- ASP.NET MVC NPOI导入Excel DataTable批量导入到数据库
使用NPOI导入Excel 首先在MVC项目中导入NPOI 查询NPOI安装,排序依据,选择:最高下载量,选择第一个. 在控制器中创建ExcelController 在Index视图中写入代码: @u ...
- 为什么主流的 App 看起来都差不多?这可能是件好事
欢迎访问网易云社区,了解更多网易技术产品运营经验. 现在设计师可以把精力都花在真正有意义的地方了. 打开Instagram.Airbnb.Apple Music.Twitter.Dropbox或Lyf ...
- OSLab多进程
日期:2019/3/23 内容:Linux下与多进程相关的函数. 进程基本知识 定义 应用程序关于某数据集合上的一次运行活动. 特点 ·操作系统进行资源分配和调度的基本单位 ·进程是程序的一次 ...
- git使用分支与tag
查看分支:git branch 创建分支:git branch <name> 切换分支:git checkout <name> 创建+切换分支:git checkout -b ...
- 重拾 BFC、IFC、GFC、FFC
温故知新,巩固基础 从 FC 开始 FC,Formatting Context,格式化上下文,是 W3C CSS2.1 规范中的一个概念,定义的是页面中一块渲染区域,并且有一套渲染规则,它决定了其子元 ...
- JS简单表单验证
这里我是写了一个简单的注册表单验证功能,亲测有效,一起来看看吧! 首先我的HTML代码是这样的: class大家可以忽略一下,这里我项目使用的是bootstrap的样式. 输入用户名和密码用的是正则表 ...
- Sentry有什么作用
Sentry是一个异常日志集中收集系统,它可以捕捉到 stack trace, stack locals, preceding events和引发该异常的commit号.而当bug fix后,sent ...
- 课程二(Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization),第三周(Hyperparameter tuning, Batch Normalization and Programming Frameworks) —— 2.Programming assignments
Tensorflow Welcome to the Tensorflow Tutorial! In this notebook you will learn all the basics of Ten ...