`

IBatis完成单表基本的数据库操作 模糊查询

阅读更多

首先要加入:ibatis-2.3.4.726.jar和数据库驱动包

1。新建一个数据库连接的属性文件如下:

driver = com.mysql.jdbc.Driver
url = jdbc:mysql://localhost:3306/mp
username = root
password = 123

2。iBatis的配置文件:sqlmap-config.xml

<?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>
	<!-- 数据源 -->	
	<properties resource="sqlMap.properties" />
	<!-- 配置连接数据库的一些属性 -->
	<transactionManager type="JDBC">
		<dataSource type="SIMPLE">
			<!-- name部分固定冲部分,value中的${}里的名称要与sqlMap.properties属性文件中一样 -->
			<property name="JDBC.Driver" value="${driver}" />
			<property name="JDBC.ConnectionURL" value="${url}" />
			<property name="JDBC.Username" value="${username}" />
			<property name="JDBC.Password" value="${password}" />
		</dataSource>
	</transactionManager>
	<sqlMap resource="com/mengya/bean/Student.xml"/>
</sqlMapConfig>

 

sqlMap.properties就是上面的数据库连接的属性文件的名称。

3。构造一个我们数据库操作的对象:

package com.mengya.bean;

import java.sql.Date;

public class Student {
	private Integer stu_id;

	private String stu_name;

	private Integer stu_age;

	private float stu_score;

	private Date stu_birth;

	public Integer getStu_age() {
		return stu_age;
	}

	public void setStu_age(Integer stu_age) {
		this.stu_age = stu_age;
	}

	public Date getStu_birth() {
		return stu_birth;
	}

	public void setStu_birth(Date stu_birth) {
		this.stu_birth = stu_birth;
	}

	public Integer getStu_id() {
		return stu_id;
	}

	public void setStu_id(Integer stu_id) {
		this.stu_id = stu_id;
	}

	public String getStu_name() {
		return stu_name;
	}

	public void setStu_name(String stu_name) {
		this.stu_name = stu_name;
	}

	public float getStu_score() {
		return stu_score;
	}

	public void setStu_score(float stu_score) {
		this.stu_score = stu_score;
	}

	public String toString() {
		StringBuffer sb = new StringBuffer();
		sb.append("stu_id=");
		sb.append(stu_id);
		sb.append("		stu_name=");
		sb.append(stu_name);
		sb.append("		stu_age=");
		sb.append(stu_age);
		sb.append("		stu_score=");
		sb.append(stu_score);
		sb.append("		stu_birth=");
		sb.append(stu_birth);
		return sb.toString();
	}
}

 4。构造一个iBatis的核心类SqlMapClient的对象的工具类:

import java.io.IOException;
import java.io.Reader;
import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;

public class SqlMapClientUitl {
	private static SqlMapClientUitl sqlMapClientUitl;
	private static SqlMapClient sqlMapClient = null;
	private Reader reader = null;
	private SqlMapClientUitl() {
		try {
			reader = Resources.getResourceAsReader("sqlmap-config.xml");
			sqlMapClient = SqlMapClientBuilder.buildSqlMapClient(reader);
			reader.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	public static SqlMapClientUitl createSqlMapClientUitl() {
		if (null == sqlMapClientUitl) {
			synchronized (SqlMapClientUitl.class) {
				if (null == sqlMapClientUitl) {
					sqlMapClientUitl = new SqlMapClientUitl();
				}
			}
		}
		return sqlMapClientUitl;
	}
	public SqlMapClient getSqlMapClient() {
		return sqlMapClient;
	}
}

 

5。构造IBatis操作数据库的SQL配置文件Student.xml

<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
    "http://ibatis.apache.org/dtd/sql-map-2.dtd">

<sqlMap namespace="PhoneBook">
	
	<!-- 
		注意:1,SQL语句有返回值类型则需要配置上
			 2,传参只能传一个,多个可以封装成一个对象。那##之间的参数要与resultClass中的属相同
	 -->
		
	<typeAlias alias="Student" type="com.mengya.bean.Student" />

	<select id="queryAllStu" resultClass="Student">
		select * from student
	</select>

	<select id="queryStuByID" parameterClass="int"
		resultClass="Student">
		select * from student where stu_id =#id#
	</select>
	<!-- ##之间的参数要与Student中的属相同 -->
	<insert id="addStu" parameterClass="Student">
		insert into student
		values(#stu_id#,#stu_name#,#stu_age#,#stu_score#,#stu_birth#)
	</insert>

	<delete id="delStuByID" parameterClass="int">
		delete from student where stu_id = #id#
	</delete>

	<update id="updateStudentByStu" parameterClass="Student">
		update student set
		stu_name=#stu_name#,stu_age=#stu_age#,stu_score=#stu_score#,stu_birth=#stu_birth#
		where stu_id=#stu_id#
	</update>
	
	<!-- 模糊查询 -->
	<select id="queryStuByLikeName" parameterClass="String" resultClass="Student">
		select * from student where stu_name like '%$stu_name$%';
	</select>
	
	<!-- 模糊查询,推荐写法这样的查询条件要灵活些 -->
	<select id="queryStuByAllLikeName" parameterClass="String" resultClass="Student">
		select * from student where stu_name like '#stu_name#';
	</select>
	
</sqlMap>

 

6。完成的Student的DAO:

import java.sql.SQLException;
import java.util.List;

import com.ibatis.sqlmap.client.SqlMapClient;
import com.mengya.bean.Student;
import com.mengya.dao.inter.StudentDAO;
import com.mengya.util.SqlMapClientUitl;

public class StudentDAOImple implements StudentDAO {

	private SqlMapClient sqlMapClient;

	@SuppressWarnings("unchecked")
	public List<Student> queryAllStu() {
		List<Student> stuList = null;
		sqlMapClient = SqlMapClientUitl.createSqlMapClientUitl()
				.getSqlMapClient();
		try {
			stuList = sqlMapClient.queryForList("queryAllStu");
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return stuList;
	}

	public Student queryStuByID(int id) {
		sqlMapClient = SqlMapClientUitl.createSqlMapClientUitl()
				.getSqlMapClient();
		Student stu = null;
		try {
			stu = (Student) sqlMapClient.queryForObject("queryStuByID", id);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return stu;
	}

	public void addStudent(Student stu) {
		sqlMapClient = SqlMapClientUitl.createSqlMapClientUitl()
				.getSqlMapClient();
		try {
			sqlMapClient.insert("addStu", stu);
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	public void delStudent(int id) {
		sqlMapClient = SqlMapClientUitl.createSqlMapClientUitl().getSqlMapClient();
		try {
			sqlMapClient.delete("delStuByID",id);
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	public void updateStu(Student stu) {
		sqlMapClient = SqlMapClientUitl.createSqlMapClientUitl().getSqlMapClient();
		try {
			sqlMapClient.update("updateStudentByStu", stu);
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}

	@SuppressWarnings("unchecked")
	public List<Student> queryStuByLikeName(String name) {
		sqlMapClient =SqlMapClientUitl.createSqlMapClientUitl().getSqlMapClient();
		try {
			return sqlMapClient.queryForList("queryStuByLikeName", name);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return null;
	}
}

 

7。测试:

public class StuentTest {
	@Test
	public void queryAllStu(){
		StudentDAO studao = new StudentDAOImple();
		List<Student> stuList = studao.queryAllStu();
		for(Student stu : stuList){
			System.out.println(stu);
		}
	}
	
	@Test
	public void queryStuByID(){
		StudentDAO studao = new StudentDAOImple();
		System.out.println(studao.queryStuByID(102));
	}
	@Test
	public void addStu(){
		StudentDAO studao = new StudentDAOImple();
		Student stu = new Student();
		stu.setStu_id(null);
		stu.setStu_name("小酱油");
		stu.setStu_score(85f);
		stu.setStu_age(22);
		stu.setStu_birth(java.sql.Date.valueOf("1987-09-16"));
		studao.addStudent(stu);
	}
	@Test
	public void delStu(){
		StudentDAO studao = new StudentDAOImple();
		studao.delStudent(103);
	}
	@Test
	public void updStu(){
		StudentDAO studao = new StudentDAOImple();
		Student stu = studao.queryStuByID(102);
		stu.setStu_age(22);
		stu.setStu_score(100);
		studao.updateStu(stu);
	}
	
	@Test
	public void queryLikeName(){
		StudentDAO studao = new StudentDAOImple();
		List<Student> stuList = studao.queryStuByLikeName("小");
		for(Student stu : stuList){
			System.out.println(stu);
		}
	}
	
	@Test
	public void queryALLLikeName(){
		StudentDAO studao = new StudentDAOImple();
		List<Student> stuList = studao.queryStuByLikeName("%小%");
		for(Student stu : stuList){
			System.out.println(stu);
		}
	}
}

 

 

2
0
分享到:
评论
1 楼 zzxt0315 2012-07-16  
没有数据库。。。

相关推荐

    ibatis基本操作数据库

    3. **结果映射**:iBatis提供了结果映射功能,将数据库查询的结果自动转化为Java对象。通过定义`&lt;resultMap&gt;`,我们可以指定列名与Java属性的对应关系,甚至处理一对一、一对多、多对多等复杂关系。 4. **事务管理*...

    操作数据库 iBATIS查询

    ### 操作数据库iBATIS查询详解 #### 一、iBATIS中的LIKE查询技巧 iBATIS是一款优秀的Java持久层框架,它简化了基于SQL的程序编写,避免了程序员手动处理结果集和手工编写SQL语句。在进行数据库查询时,LIKE查询是...

    ibatis入门--对数据库的操作

    【ibatis入门--对数据库的操作】这篇文章主要讲解了如何使用iBatis框架来操作数据库,iBatis是一个轻量级的持久层框架,它将SQL语句与Java代码分离,提高了开发效率和代码的可维护性。以下是文章涉及的关键知识点: ...

    J2ME数据库操作模糊查询

    除了使用JDBC,还可以使用ORM(Object-Relational Mapping)框架,如ProGuard或iBatis,它们可以帮助简化数据库操作,将Java对象与数据库表映射起来,从而更方便地实现模糊查询。 在J2ME中进行模糊查询时,还需要...

    iBATIS模糊查询

    因此,在使用iBATIS进行模糊查询时,需要根据数据库引擎的不同选择合适的查询语句。 3. 优化查询性能:模糊查询可能会影响查询性能,因此需要优化查询语句和数据库索引。例如,可以使用索引来加速模糊查询,或者...

    根据MyBatis或iBatis的SQLMapper文件反向生成数据库表

    根据MyBatis或iBatis的SQLMapper文件解析生成数据库表,通常是指通过解析MyBatis或iBatis的SQLMapper文件中的SQL语句,然后根据这些SQL语句来生成对应的数据库表结构。这样的需求可能源于需要将已有的SQLMapper文件...

    扩展 iBatis 以透明支持多种数据库

    iBatis 是一个流行的 Java 框架,它将 SQL 查询与应用程序逻辑分离,提供更直接的数据库操作方式。 描述中提到的链接虽然没有具体内容,但通常博客会详细介绍如何通过配置、插件或自定义实现来扩展 iBatis,以适应...

    ibatis.net winform搭建带数据库

    1. **SQL Maps**: iBATIS的核心组件,它包含一组映射规则,将数据库查询与.NET对象模型关联起来。SQL Maps定义了SQL语句、参数映射以及结果集转换。 2. **动态SQL**: 允许在SQL语句中进行条件判断,使得同一个SQL ...

    ibatis 配置 连上 h2 数据库

    以上就是如何配置Ibatis连接到H2数据库的基本步骤。在实际开发中,你可能还需要处理事务管理、异常处理、日志记录等问题。同时,对于生产环境,你可能会选择更强大的数据库系统,如MySQL、Oracle等,而H2数据库更...

    ibatis多表查询

    在Ibatis中,多表查询是一项重要的功能,它允许我们处理复杂的数据库操作,例如一对多、多对一或一对一的关系。在这个例子中,我们将探讨如何使用Ibatis进行一对多的多表查询,以`book`和`user`两个表为例。 首先,...

    iBatis与数据库交互

    iBatis的核心思想是将SQL语句和Java代码分离,提供了一种灵活的数据访问接口,简化了数据库操作。 一、iBatis基本概念 1. SQL映射文件:iBatis的配置文件,包含了SQL语句、参数映射和结果映射等信息。 2. Mapper...

    主子表查询ibatis

    在IT行业中,ORM(Object-Relational Mapping)框架是数据库操作的重要工具,而iBATIS作为一款老牌的ORM框架,被广泛应用于Java项目中。本文将深入探讨如何在iBATIS中进行主子表查询,以及涉及到的相关技术如一对多...

    Ibatis多表查询

    ### Ibatis多表查询知识点详解 #### 一、数据库表结构设计 为了演示Ibatis的多表查询功能,本文档采用了一个简单的例子:一个图书 (`book`) 表和一个用户 (`user`) 表,其中图书表与用户表之间存在一对多的关系。...

    Struts1.2+IBatis操作数据库的案例

    iBatis是由Clinton Begin创建的一个轻量级框架,它不是一个完整的ORM(对象关系映射)解决方案,而是将SQL查询语句直接写在XML配置文件中,或者在Java代码中动态构造,使得数据库操作更直观、更灵活。iBatis的核心...

    IBATIS连接多数据库参考文档

    本文档将深入探讨如何在IBATIS框架下连接和管理多个数据库,以便于在不同环境中灵活切换或同时操作多个数据源。 IBATIS是一个流行的Java和.NET平台上的数据访问层解决方案,它允许开发者编写SQL语句并与对象模型...

    spring+ibatis+jsp集成实现数据库查询分页

    本教程将深入探讨如何使用Spring、iBatis和JSP这三个组件来集成实现数据库查询和分页功能。这三个技术结合,能够构建出高效、灵活且易于维护的数据访问层。 首先,Spring是一个开源的应用框架,提供依赖注入(DI)...

    IBATIS建立的数据库连接

    4. **结果映射**: 在SQL映射文件中定义结果映射,将数据库查询结果映射到Java对象上。 5. **执行SQL**: 在服务实现类中,使用`SqlSession`的`selectOne`、`selectList`、`insert`、`update`或`delete`方法执行SQL,...

Global site tag (gtag.js) - Google Analytics