简单的spring+ibatis入门实例:ibatis是一种半自动化的持久层框架,它介于JDBC和hibernate之间,使用比较灵活。

一:目录结构

二:需要导入的jar包:

所有的第三方jar包都需要加上,spring.jar、ibatis.-2.3.3.720.jar、sqlijdbc.jar、oscache-2.4.jar、commons-pool-1.3.jar、commons-dbcp-1.4.jar,mysql-connector-5.0.5.jar。不然运行的时候都要报错,这里需要注意SqlMapClientDaoSupport类需要的jar包来自于spring.jar,不能导错。

三:代码

1.bean包

bean包封装了POJO对象User,有两个属性id和name

如下:

 /**
*
*/
package com.hlcui.bean; /**
* @author Administrator
*
*/
public class User {
private int id;
private String name; 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;
} }

2. Dao包

Dao里面有一个PersonOperDao和PersonOperDaoImpl。PersonOperDao是一个接口,PersonOperDaoImpl实现了Dao的接口。

PersonOperDao代码如下:

 /**
*
*/
package com.hlcui.dao; import java.util.List; import com.hlcui.bean.User; /**
* @author Administrator
*
*/
public interface PersonOperDao {
public List<User> getAllUsers();
public User getUserById(int id);
public void save(User user);
public void delete(int id);
public void modify(User user);
}

PersonOperDaoImpl代码如下:

 /**
*
*/
package com.hlcui.dao; import java.util.List; import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport; import com.hlcui.bean.User; /**
* @author Administrator
*
*/
public class PersonOperDaoImpl extends SqlMapClientDaoSupport implements
PersonOperDao { @SuppressWarnings("unchecked")
@Override
public List<User> getAllUsers() {
return this.getSqlMapClientTemplate().queryForList("getAllUsers", null);
} @Override
public User getUserById(int id) {
return (User) this.getSqlMapClientTemplate().queryForObject("getUserById",
id);
} @Override
public void save(User user) {
this.getSqlMapClientTemplate().insert("saveUser", user);
} @Override
public void delete(int id) {
this.getSqlMapClientTemplate().delete("deleteUser", id);
} @Override
public void modify(User user) {
this.getSqlMapClientTemplate().update("modifyUser", user);
} }

四:配置文件

除此之外,关键的问题还有三个配置文件。applicationcontext.xml、ibatis.xml、sqlMapConfig.xml。

applicationContext.xml文件是spring的配置文件,

1:配置数据源 2:配置sqlmapclient配置文件  3:引入配置文件sqlmap

如下:

 <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"> <!-- 配置数据源 -->
<bean id="datasource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>
<property name="username">
<value>root</value>
</property>
<property name="password">
<value>root</value>
</property>
<property name="url">
<value>jdbc:mysql://localhost:3306/test</value>
</property>
</bean> <!-- 引入sqlmap配置文件 -->
<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation">
<value>sqlMapConfig.xml</value>
</property>
</bean> <!-- 配置DAO -->
<bean id="PersonOperDaoImpl" class="com.hlcui.dao.PersonOperDaoImpl">
<property name="dataSource">
<ref bean="datasource" />
</property>
<property name="sqlMapClient">
<ref bean="sqlMapClient" />
</property>
</bean>
</beans>
 

ibatis.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 >
<typeAlias type="com.hlcui.bean.User" alias="user"/>
<resultMap id="ibatisTest" class="user" >
<result column="id" property="id" jdbcType="int" />
<result column="name" property="name" jdbcType="varchar" />
</resultMap> <!-- 获得全查询列表 -->
<select id="getAllUsers" resultMap="ibatisTest">
select * from User
</select> <!-- 根据id获得用户对象 -->
<select id="getUserById" resultMap="ibatisTest">
select * from User where id=#value#
</select> <!-- 新增用户对象 -->
<insert id="saveUser" parameterClass="user">
insert into User (id,name) values (#id#,#name#)
</insert> <!-- 删除用户对象 -->
<delete id="deleteUser">
delete from User where id=#value#
</delete> <!-- 更新用户对象 -->
<delete id="modifyUser" parameterClass="user">
update User set name=#name# where id=#id#
</delete>
</sqlMap>

sqlMapConfig.xml文件如下:

 <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMapConfig
PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"
"http://www.ibatis.com/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
<sqlMap resource="ibatis.xml" />
</sqlMapConfig>

五:测试语句

 /**
*
*/
package com.hlcui.test; import java.util.List; import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; import com.hlcui.bean.User;
import com.hlcui.dao.PersonOperDao; /**
* @author Administrator
*
*/
public class TestUserOper {
/**
* 测试获取所有用户信息
*/
@Test
public void testFindAllUsers() {
List<User> users = getDAO().getAllUsers();
for (User u : users) {
System.out.println("编号:" + u.getId() + " 姓名:" + u.getName());
}
} /**
* 测试根据id获取对象信息
*/
@Test
public void testFindUser() {
int id = 1;
User user = getDAO().getUserById(id);
System.out.println("编号:" + id + " 姓名:" + user.getName());
} /**
* 测试插入用户信息
*/
@Test
public void testSaveUserInfo() {
User u = new User();
u.setId(2);
u.setName("Lucy");
getDAO().save(u);
} /**
* 测试删除用户信息
*/
@Test
public void testDeleteUserInfo() {
int id = 2;
getDAO().delete(id);
} /**
* 测试修改用户信息
*/
@Test
public void testModifyUserInfo() {
int id = 1;
User user = getDAO().getUserById(id);
user.setName("Lili");
getDAO().modify(user);
} /**
* 获取DAO对象
*
* @return
*/
public PersonOperDao getDAO() {
ApplicationContext ac = new ClassPathXmlApplicationContext(
"applicationContext.xml");
return (PersonOperDao) ac.getBean("PersonOperDaoImpl");
}
}

以上代码均已验证。

spring+ibatis环境搭建的更多相关文章

  1. 最新版ssh hibernate spring struts2环境搭建

    最新版ssh hibernate spring struts2环境搭建 最新版spring Framework下载地址:spring4.0.0RELEASE环境搭建 http://repo.sprin ...

  2. Spring MVC 环境搭建(二)

    在Spring MVC 环境搭建(一)中我们知道 spring 的配置是通过 urlmapping 映射到控制器,然后通过实现Controller接口的handlerequest方法转向页面. 但这存 ...

  3. Spring MVC 环境搭建(一)

    一.建立 JavaWeb 项目 1.建立一个 Java 项目. 2.在项目下新建一个文件夹 webapp (命名可自取,这个目录即是网站根目录),再在该文件夹下新建一个 WEB-INF 文件夹(命名固 ...

  4. Spring MVC 环境搭建(maven+SpringMVC+mybatis+Freemarker)

    Spring MVC 环境搭建(maven+SpringMVC+mybatis+Freemarker) 一.准备工作 1.Eclipse Java EE IDE(4.4.1) 2.JDK 3.Tomc ...

  5. Spring开发环境搭建教程

    Spring开发环境搭建 JDK7以上版本 eclispe for j2ee 4.0以上版本 Spring frameWorks 3.0以上版本 至于前两个我们就不介绍,直接百度就可以了,对于Spri ...

  6. 第一节 Spring的环境搭建

     正在构建,扫一扫,敬请期待 和玩得来的人在一起玩才叫玩! 和玩不来的人在一起玩,那种感觉就像加班啊! 关注胖个人微信公众账号,希望对各位学生有所帮助! --胖先生 Spring框架,什么是Sprin ...

  7. Spring开发环境搭建(Eclipse)

    开发环境搭建,主要包含2部分: Java安装 Eclipse安装 为易于学习,我们只安装这2个部分,对于一般开发学习也足够了.如果你有其他要安装的,酌情添加. Java安装 我们使用Java8: 下载 ...

  8. 1 IDEA 安装 及 IDEA开发 spring的环境搭建

    摘要: 主要讲解使用 IDEA 开发 Spring MVC 的环境搭建,Maven的简单教学. 参考1:https://my.oschina.net/gaussik/blog/385697 参考2:h ...

  9. Spring框架环境搭建

    环境要求:jdk  1.7 及以上.Spring版本:4.3.2 1.建立普通的java 工程 2.新建lib目录,并将一下5个核心jar包拷贝过来,并加入classpath中 下载地址: http: ...

随机推荐

  1. 奇异秀App:奇异秀秀奇异,用大头视频来拜年

    奇异秀APP是一款最新神奇的娱乐视频制作的手机应用软件,含有换头视频和特效视频两大特色功能,制作简单,效果酷炫,一键生成: 换头视频中可以由用户上传个人头像制作各种搞笑好玩的大头视频,有神曲.搞笑.节 ...

  2. NOIP2008 双栈队列

    1.      双栈排序 (twostack.pas/c/cpp) Tom 最近在研究一个有趣的排序问题.如图所示,通过 2 个栈 S1 和 S2,Tom 希望借助 以下 4 种操作实现将输入序列升序 ...

  3. Bzoj 2006: [NOI2010]超级钢琴 堆,ST表

    2006: [NOI2010]超级钢琴 Time Limit: 20 Sec  Memory Limit: 552 MBSubmit: 2222  Solved: 1082[Submit][Statu ...

  4. matlab 函数说明—conv2

    conv 是卷积的意思,2表示2维卷积.   conv2的调用形式如下: 1. C = conv2(A,B) 这是最简单的一种调用形式,B作为卷积核在A的范围内滑动,若[ma na] =size(A) ...

  5. 【转载】 Linux用户态和内核态

    [说明]转载自 http://my.oschina.net/liubin/blog/27795 究竟什么是用户态,什么是内核态,这两个基本概念以前一直理解得不是很清楚,根本原因个人觉得是在于因为大部分 ...

  6. HDU-3436 Queue-jumpers 树状数组 | Splay tree删除,移动

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3436 树状数组做法<猛戳> Splay tree的经典题目,有删除和移动操作.首先要离散化 ...

  7. A Tour of Go Advanced Exercise: Complex cube roots

    Let's explore Go's built-in support for complex numbers via the complex64 and complex128 types. For ...

  8. mysql之一

    MySQL or MariaDB 简介 DBMS:数据库管理系统 RDBMS:关系型数据库管理系统    总之:他们都是一个数据管理程序:大多都是CS架构,都有专门的通信协议进行数据交换 关系模型: ...

  9. iOS与HTML5交互方法总结(转)

    今天小编在找技术文章的时候,发现这样一个标题:iOS与HTML5交互方法总结,怎么看着这么熟悉呢?   还以为是刚哥用了别的文章,点进去一看,原来是刚哥自己写的文章,他们转载的,而且还上了Dev St ...

  10. IDF实验室-简单编程-特殊的日子 writeup

    题目:http://ctf.idf.cn/index.php?g=game&m=article&a=index&id=50 题目提示要爆破,代表加密应该是不可逆的. 密文:4D ...