`
zhouxingfu520
  • 浏览: 422292 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

iBatis2 实现 增 删 改 查

阅读更多
在最近两年项目开发中 一直都是使用hibernate做数据持久层 我个人练习是使用了iBatis2 灵活的sql 半自动化的ORM 下面是我作为一名初学iBatis的源代码

sqlConfig.xml 配置iBatis访问数据库
<?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">
		<dataSource type="SIMPLE">
			<property name="JDBC.Driver" value="com.mysql.jdbc.Driver" />
	<property name="JDBC.ConnectionURL"
value="jdbc:mysql://192.168.0.250:3306/common" />
			<property name="JDBC.Username" value="admin" />
			<property name="JDBC.Password" value="admin" />
		</dataSource>
	</transactionManager>
	<sqlMap resource="com/ibatisdemo/user.xml" />
</sqlMapConfig>




user.xml iBatis 配置SQL
<?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 alias="User" type="com.ibatisdemo.ShnUsers" />

	<!-- 无参数的查询 -->
	<select id="queryUser" resultClass="User">
		select * from shn_users
	</select>

	<!-- 有参数的查询 -->
	<select id="queryUserByUserid" resultClass="User"
		parameterClass="int">
		select * from shn_users where userid=#userid#
	</select>


	<!-- 插入数据 -->
	<insert id="insertUser" parameterClass="User">
		insert into
		shn_users(username,passwd,email,createtime,isban,lastupdate
,registerip,userstate)
values(#username#,#passwd#,#email#,#createtime#,#isban#,#lastupdate#
,#registerip#,#userstate#)
	</insert>


    <!-- 删除数据 -->
	<delete id="deleteUser" parameterClass="User">
		delete from shn_users where userid=#userid#
	</delete>
	
	<!-- 更新数据 -->
	<update id="updateUser" parameterClass="User">
		update shn_users set username=#username# where userid=#userid#
	</update>
	
	
	<!-- 模糊查询 -->
	<select id="likeUser" parameterClass="String" resultClass="User">
	select * from shn_users where username like '%$userid$%'
	</select>
	
</sqlMap>





类文件
package com.ibatisdemo;

import java.util.Date;
import java.util.HashSet;
import java.util.Set;

/**
 * ShnUsers entity.
 * 
 * @author MyEclipse Persistence Tools
 */

public class ShnUsers implements java.io.Serializable {

	// Fields

	/**
	 * 
	 */
	private static final long serialVersionUID = 6346476404799232913L;
	private Integer userid;
	private String username;
	private String passwd;
	private String email;
	private Date createtime;
	private Integer isban;
	private Date lastupdate;
	private String registerip;
	private String userstate;
	private String grade;
	private Integer score;
	private Integer rescore;
	private String life;
	private String question;
	private String answer;

}



测试类调用 iBatis方法
public class test {

	public static void main(String[] args) {
		SqlMapClient sqlMapClient = null;
		try {

			Reader reader = com.ibatis.common.resources.Resources
					.getResourceAsReader("com/ibatisdemo/sqlConfig.xml");
			sqlMapClient = com.ibatis.sqlmap.client.SqlMapClientBuilder
					.buildSqlMapClient(reader);
			reader.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
		try {
//			 //无参数的查询
//			 List<ShnUsers> userlist = sqlMapClient.queryForList("queryUser");
//			 for (ShnUsers user : userlist) {
//			 System.out.print(user.getUsername()+"\n");
//			 System.out.print(user.getPasswd()+"\n");
//			 System.out.print(user.getAnswer()+"\n");
//			 }
//			// 有参数的查询
//			ShnUsers us = (ShnUsers) sqlMapClient.queryForObject(
//					"queryUserByUserid", 2);
//			System.out.print(us.getUsername() + "\n");
//			System.out.print(us.getPasswd() + "\n");
//			System.out.print(us.getAnswer() + "\n");

//			//添加数据
//			ShnUsers users=new ShnUsers();
//			users.setAnswer("");
//			users.setCreatetime(new Date());
//			users.setEmail("");
//			users.setUsername("");
//			users.setPasswd("");
//			users.setLife("");
//			users.setScore(123);
//			sqlMapClient.insert("insertUser", users);
			
			
//			//删除数据
//			ShnUsers userds=new ShnUsers();
//			userds.setUserid(729);
//			sqlMapClient.delete("deleteUser", userds);
			
//			//更新数据
//			ShnUsers userus=new ShnUsers();
//			userus.setUsername("123456");
//			userus.setUserid(727);
//			sqlMapClient.delete("updateUser", userus);
			
			
			 //模糊查询
			 List<ShnUsers> userlist = sqlMapClient.queryForList("likeUser", "a");
			 for (ShnUsers user : userlist) {
			 System.out.print(user.getUsername()+"\n");
			 System.out.print(user.getPasswd()+"\n");
			 System.out.print(user.getAnswer()+"\n");
			 }
			 
			 
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

分享到:
评论
5 楼 zzy7182 2011-06-30  
调用insert方法后,会返回生成的主键的值。
4 楼 donglangjohn 2011-06-10  
<p>Hi java_user</p>
<p> </p>
<p>我改用selectkey也不管用啊</p>
<p> </p>
<p>xml 部分</p>
<pre name="code" class="xml"> &lt;insert id="insertPersons"  parameterType="com.wayne.domain.Person"&gt;
&lt;selectKey keyProperty="id" order="AFTER" resultType="long"&gt;
select LAST_INSERT_ID() as id
&lt;/selectKey&gt;
INSERT INTO Person (name,address,age)
VALUES
&lt;foreach collection="<span style="color: #ff0000;">persons</span>" item="item" index="index"
separator=","&gt;
(#{item.name},#{item.address},#{item.age})
&lt;/foreach&gt;
&lt;/insert&gt;</pre>
<p> </p>
<p>code部分</p>
<pre name="code" class="java"> public void insertPersons(){
List&lt;Person&gt; persons = new ArrayList&lt;Person&gt;(10);
Person tmp= null;
for(int i=0;i&lt;10;i++){
tmp = new Person();
tmp.setName("a "+i);
tmp.setAddress("aa " + i);
tmp.setAge(i);
persons.add(tmp);
}
Map&lt;String,List&lt;Person&gt;&gt; map = new HashMap&lt;String, List&lt;Person&gt;&gt;();
map.put("<span style="color: #ff0000;">persons</span>", persons);

SqlSession session = MyFactory.sessionFactory().openSession();
PersonMapper personMapper = session.getMapper(PersonMapper.class);

personMapper.insertPersons(map);
session.commit();
for (Person person : persons) {
System.out.println(person.getId());
}
}</pre>
<p> </p>
<p>现在能确保batch insert是ok的,但是key value没有返回到person.id里</p>
<p> 特意debug后发现key value实际已经由mybatis获取到,但是并未set到person.id里  @_@</p>
3 楼 java_user 2011-06-09  
donglangjohn 写道
请问LZ怎么从batch insert 里获取DB自动产生的ID值啊

详细的情况请看:

http://www.iteye.com/problems/66512

使用selectKey标签
2 楼 donglangjohn 2011-06-09  
请问LZ怎么从batch insert 里获取DB自动产生的ID值啊

详细的情况请看:

http://www.iteye.com/problems/66512
1 楼 kkvsyy 2011-06-02  
<!-- 无参数的查询 -->  
9.    <select id="queryUser" resultClass="User">  
10.        select * from shn_users  
11.    </select>  
12. 
13.    <!-- 有参数的查询 -->  
14.    <select id="queryUserByUserid" resultClass="User" 
15.        parameterClass="int">  
16.        select * from shn_users where userid=#userid#  
17.    </select>  
<!-- 模糊查询 -->  
42.    <select id="likeUser" parameterClass="String" resultClass="User">  
43.    select * from shn_users where username like '%$userid$%' 
44.    </select>  
你这三条语句 可以折成一条 ibatis是动态的

相关推荐

    ibatis实现增删改查功能demo

    在本示例中,"ibatis实现增删改查功能demo"是一个具体的项目,旨在演示如何利用Ibatis进行数据库操作,包括插入(Insert)、删除(Delete)、更新(Update)和查询(Select)数据。以下将详细解析这个项目的重点内容...

    struts2+spring+ibatis做的增删改查的小例子

    这个"struts2+spring+ibatis做的增删改查的小例子"是一个针对初学者的实践教程,旨在帮助学习者理解这三个框架如何协同工作以实现数据的CRUD(创建、读取、更新、删除)操作。 首先,Struts2作为MVC(Model-View-...

    Ibatis和Spring整合例子,实现增删改查功能

    Ibatis和Spring整合例子,实现增删改查功能.

    ibatis的简单增删改查

    本文将详细介绍Ibatis如何实现简单的增删改查操作,并结合提供的源码进行深入理解。 首先,Ibatis的核心是SQL映射文件和SqlSessionFactory。SQL映射文件是XML格式的,其中包含了SQL语句及其参数映射,是Ibatis执行...

    ibatis框架实现的增删改查

    本篇文章将深入探讨如何使用Ibatis框架实现对`student`表的增删改查操作,包括模糊查询以及利用序列自动生成主键。 首先,我们来理解Ibatis的基本概念。Ibatis是由Apache基金会维护的一个开源项目,它是一个SQL映射...

    一个最简单的IBatis增删改查操作例子

    在实现增删改查操作之前,我们需要准备以下基础: 1. 数据库:创建一个数据库表,用于存储数据。例如,可以创建一个名为`users`的表,包含`id`(主键)、`username`和`password`等字段。 2. Java实体类:根据...

    Ibatis3.0 增删改查(二)

    在本教程中,我们将深入...在“增删改查(二)”这个主题中,我们将继续学习如何利用Ibatis高效地完成日常的数据库任务。通过实践和理解这些基本操作,你可以更好地掌握Ibatis,并将其应用于实际项目中,提升开发效率。

    ibatis的增删改查

    在这个"ibatis的增删改查"主题中,我们将深入探讨如何在不依赖MVC框架的情况下,利用Ibatis进行数据操作。 1. **Ibatis安装与配置** 首先,你需要将Ibatis的jar包添加到项目的类路径中,或者通过Maven或Gradle等...

    一个S2S+ibatis一个增删改查的例子(由原先SSH2改编)

    标题中的“S2S+ibatis一个增删改查的例子”指的是使用Struts2和iBatis框架实现的典型数据库操作应用。Struts2是一个基于MVC设计模式的Java Web框架,而iBatis则是一个SQL映射框架,用于简化数据库访问。这个例子将...

    ibatis的增删改查功能

    总结,Ibatis以其简单易用、灵活高效的特性在Java开发中占据重要地位,其增删改查功能的实现让开发者能更加专注于业务逻辑,而不是繁琐的JDBC操作。对于初学者来说,深入理解Ibatis的CRUD操作及其相关配置,对提升...

    SSI(Struts2,Spring,Ibatis)集成实现用户增删改查

    增强了代码的健壮性和可重用性,加快了开发速度,但是也有一些不足之处,比如由于三种框架的配置文件较多,也给我们带来了一些不便,特别是对于较小的应用来说更是如此,本文主要是对Strtus2、Spring、iBatis三个开源...

    struts+spring+ibatis做的一个增删改查例子

    这个例子是利用这三个框架实现了一个基础的增删改查(CRUD)功能,涵盖了数据库操作、业务逻辑处理以及用户界面交互。 **Struts** 是一个基于MVC(Model-View-Controller)设计模式的Java Web框架,负责处理用户的...

    Ibatis增删改查

    在本文中,我们将深入探讨如何使用Ibatis实现基本的增删改查操作,这对于初学者来说是非常重要的基础知识。 ### 1. Ibatis 框架简介 Ibatis 最初由Clinton Begin 创建,后来成为Apache软件基金会的一个项目。它的...

    ssi——struts2+spring+ibatis(登入+增删改查)

    在增删改查功能中,iBatis通过Mapper接口与XML配置文件配合,实现了数据的CRUD操作。开发者只需要定义接口方法,iBatis会自动生成SQL并执行,返回结果集。 这个项目的文件结构通常会包含以下几个部分: 1. **src/...

    ibatis + oracle 增删改查例子

    本示例“ibatis + oracle 增删改查例子”将向我们展示如何利用这两个工具进行基本的数据操作。 首先,`iBatis`的核心是SQL Map配置文件,它包含了SQL语句和映射规则。在`MyEclipse`中导入这个项目后,你需要找到并...

    struts1+spring+ibatis的增删改查+登陆注册

    总之,这个项目提供了一个学习和实践Java Web开发的良好平台,通过Struts1、Spring和iBatis的组合,展示了如何构建一个完整的用户管理应用,包括登录、注册以及对数据的增删改查操作。这样的实践经验有助于开发者...

    struts2+spring+ibatis增删改查

    5. **CRUD操作**:在案例中,每个基本的数据库操作(增、删、改、查)都会对应一个Action,这些Action通常会调用Service层的方法,Service层再调用Mapper接口的方法来执行SQL。例如,添加数据的Action会调用add方法...

    iBatis操作MySQL增删改查

    本篇文章将深入探讨如何利用iBatis进行MySQL数据库的增删改查操作,同时提供了一个亲测可用的示例,包括配套的SQL文件和完全配置,确保读者能够快速上手。 首先,我们需要了解iBatis的基本概念。iBatis是一个轻量级...

    Ibatis3.0 增删改查(三)

    在本教程中,我们将深入探讨Ibatis 3.0框架中的增、删、改、查操作,这是关于Ibatis 3.0系列教程的第三部分。...通过学习这一部分,你应能熟练掌握在Ibatis中进行数据的增删改查操作,并理解其背后的原理和用法。

    Maven+spring+ struts2+ Ibatis+mysql整合增删改查

    Ibatis与MySQL的结合,使得开发者能够方便地执行SQL查询,实现数据的增删改查操作。 整合这五个技术的关键在于配置。在Maven的pom.xml文件中,需要定义所有依赖项,确保所有组件的版本兼容。在Spring的配置文件中,...

Global site tag (gtag.js) - Google Analytics