2011年6月iBatis 更名为 MyBatis,从 iBatis 到 MyBatis,不只是名称上的变化,MyBatis 提供了更为强大的功能,同时并没有损失其易用性,相反,在很多地方都借助于 JDK 的泛型和注解特性进行了简化。所以你懂的,开始学习就从MyBatis吧.

例子使用MyBatis+Oracle实现一个用户表的查询,如下:
数据库 在MySQL中,test数据库下,简历user表,字段:iid,ifullname,ipassword,建表语句略。 
②需导入的包 只有两个: mybatis-3.4.4.jar 和 ojdbc14.jar(JDBC包) 
③目录结构 采用最简单的结构,com.mybatis包下有且仅有四个文件 configuration.xml user.xml User.java Test.java 

④mybatis配置文件configuration.xml,

[xml]

 <?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="User" type="com.mybatis.User"></typeAlias>
</typeAliases> <environments default="development">
<environment id="development">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="oracle.jdbc.driver.OracleDriver" />
<property name="url" value="jdbc:oracle:thin:@192.168.0.87:1526:entegor" />
<property name="username" value="ideal" />
<property name="password" value="ideal" />
</dataSource>
</environment>
</environments> <mappers>
<mapper resource="user.xml"/>
</mappers> </configuration>

User表sql文件User.xml,

[xml]

 <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="User">
<select id="selectUser" parameterType="int" resultType="User">
SELECT * FROM user WHERE id = #{id}
</select> <select id="selectUsers" resultType="User">
SELECT * FROM user
</select> </mapper>

表结构文件User.java

 package com.mybatis;

 public class User {
private int iid;
private String ifullname;
private String iloginname;
private String ipassword;
public User(){}
public User(int id, String name) {
this.iid = id;
this.ifullname = name;
}
public String getIfullname() {
return ifullname;
}
public int getIid() {
return iid;
}
public void setIid(int iid) {
this.iid = iid;
}
public void setIfullname(String ifullname) {
this.ifullname = ifullname;
}
public String getIloginname() {
return iloginname;
}
public void setIloginname(String iloginname) {
this.iloginname = iloginname;
}
public String getIpassword() {
return ipassword;
}
public void setIpassword(String ipassword) {
this.ipassword = ipassword;
} }

⑦测试用例Test.java

 package com.controller;

 import java.io.IOException;
import java.io.Reader;
import java.util.List; 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.mybatis.User; public class Test { public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
String resource = "configuration.xml";
Reader reader = Resources.getResourceAsReader(resource);
SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(reader);
SqlSession session = ssf.openSession();
try{
User user = session.selectOne("selectUser", 2);
System.out.println(user.getIfullname());
System.out.println(user);
System.out.println("--------------分隔线---------------"); List<User> users = session.selectList("selectUsers");
for(int i=0; i<users.size(); i++) {
System.out.println(users.get(i).getIfullname());
} } catch (Exception e) {
e.printStackTrace();
} finally {
session.close();
}
} }

原文转自:http://blog.csdn.net/u011841085/article/details/18986261

从原文略做修改

Java工程中使用Mybatis (工程结合Mybatis,数据可以结合Swing使用)的更多相关文章

  1. 如何在原生工程中引入Cordova工程-for iOS 【转】

    http://blog.csdn.net/e20914053/article/details/50170487 如今混合开发方兴未艾,有的项目可能一开始是原生开发的,后期需要加入混合开发,如将Cord ...

  2. MFC在一个工程中启动其他工程的exe文件

    说明:有的时候把两个工程合并,但是偷懒不想在工程中添加代码,所以想到了这个办法,仅限偷懒哈哈哈哈 方法:新建一个主程序,在主程序的界面中添加按钮,在按钮的程序代码中添加以下语句: void CMain ...

  3. maven ----> 子工程中引入父工程

    创建父工程,打包方式指定为 pom <groupId>com.example</groupId> <artifactId>SleuthMain</artifa ...

  4. 主工程中合并库工程的Manifest文件

    修改project属性文件中的 manifestmerger.enabled=true,就可以实现Android Manifest的合并. 主要用于lib工程和主工程之间. eg: target=an ...

  5. maven的父工程中添加子工程

    父工程的结构如下: 1.选中父工程名,接着单击鼠标右键,选择”Maven“ -----> "New Maven Module Project". 2.如下图,打勾 ---&g ...

  6. iOS 一个工程中引用其他工程时要注意Skip Install选项

    当主工程引用其他工程,以便使用他们生成的库的时候,在发布时,主要注意这个选项.这个选项的说明如下 Activating this setting when deployment locations a ...

  7. iOS 一个工程中引用其他工程时编译的Architecture问题

    当引用了其他工程时,在编译时报错,提示你编译指令架构不对,你需要查看一下这几个工程的Architecture部分是否又冲突,比如主工程设置Valid Architecture为armv7 而 另一个子 ...

  8. STM32 MX Cube生成的工程中 使用printf向Uart发送数据

    1. 在main函数前面添加: int fputc(int ch,FILE *f){ uint8_t temp[1]={ch}; HAL_UART_Transmit(&huart1,temp, ...

  9. iOS在支持arc的工程中,导入不支持arc的第三方的插件

    首先将插件导入到工程中,然后点击工程名,在targets下面找到相应的条目,然后选择build phares,打开第二行compile sourses,然后找到不支持arc的.m文件,在后边添加上“- ...

  10. 多工程:基于Maven的SSM(Spring,SpringMvc,Mybatis)整合的web工程(中)

    上篇用了单工程创建了SSM整合的web工程(http://www.cnblogs.com/yuanjava/p/6748956.html),这次我们把上篇的单工程改造成为多模块工程 一:创建对应的多工 ...

随机推荐

  1. Js里面的数组去重方法

    去掉数组里面重复的有很多种,我这里就说一种比较简单的吧. var arr=[23,33,44,33,44,66,44,55,44,4,44,33,23]; for(var i=0;i<arr.l ...

  2. 腾讯.NET面试题

    在整个面试过程中,作为面试者的你,角色就是小怪兽,面试官的角色则是奥特曼,更不幸的是,作为小怪兽的你是孤身一人,而奥特曼却往往有好几个~ 以下是网友发的关于腾讯的.NET面试题,不得不说还是有一定的难 ...

  3. 页面异步发送json数据封装controller方法形参 pojo中,使用@requestBody和不使用它页面的异步方式不同之处

    方式一: 使用@requestBody 方式二 : 直接封装到pojo的方式

  4. 深入浅出数据结构C语言版(3)——递归简论

      相信学习过C语言的读者都已经接触过递归(不论是谭浩强的C程序设计还是C Primer Plus都有递归程序),本文就是对递归的基本原则进行简要介绍.首先,我们写一个基本的递归函数作为例子: int ...

  5. ASP.NET Core MVC之ViewComponents(视图组件)

    前言 大概一个来星期未更新博客了,久违了各位,关于SQL Server性能优化会和ASP.NET Core MVC穿插来讲,如果你希望我分享哪些内容可以在评论下方提出来,我会筛选并看看技术文档来对你的 ...

  6. 【树莓派】iptables相关配置

    关于iptables的配置,参见官方资料:http://wiki.ubuntu.org.cn/IptablesHowTo 最好. 进入iptables # sudo iptables -L 列出目前的 ...

  7. Windows Phone下页面跳转动画的实现

    写在前面的一些废话: 前段时间一直忙于其他的事情,好长时间没有更新博客,很多东西虽然看过.学过,但是没有仔细去思考,去总结,长时间不用或者用的少难免会遗忘.最近由于家里以及感情方面的事,人也变得有点怨 ...

  8. 性能测试平台效率优化的一次经验(python版)

    在做性能测试平台的优化过程中,由于启动任务相对其他测试任务比较频繁,而目前30次两个包的交叉对比(30次)测试需要耗时30分钟整,因此打算优先对测试流程做一次优化,将测试时间消耗降低到20分钟. 由于 ...

  9. elasticsearch 索引 red 状态恢复 green

    方案一 找到状态为 red 的索引 curl -X GET "http://172.xxx.xxx.174:9288/_cat/indices?v=" red open index ...

  10. linux使用LVM合并硬盘

    目的将两块空硬盘合并为"一块",挂载到指定目录下,达到在一个目录使用2块硬盘所有空间的效果.条件硬盘1 /dev/sdb 硬盘2 /dev/sdc方法创建pvpvcreate /d ...