`
左手边
  • 浏览: 97003 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Ibatis的简单配置和使用(学习中的笔记)

 
阅读更多

1、将支持包ibatis-2.3.0.677.jar拷贝到lib下

 

2、加入 sqlmapconfig.xml 核心配置文件到 src

 

3、修改核心配置文件,将数据库连接写好。

<?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>

	<!--
		commitRequired主要进行事务处理。
		false表示自动事务处理。
	-->
	<transactionManager type="JDBC" commitRequired="true">
		<dataSource type="SIMPLE">
			<property name="JDBC.Driver" value="org.gjt.mm.mysql.Driver" />
			<property name="JDBC.ConnectionURL" value="jdbc:mysql://localhost:3306/test" />
			<property name="JDBC.Username" value="root" />
			<property name="JDBC.Password" value="mysqladmin" />
		</dataSource>
	</transactionManager>

	<!--
		配置映射文件
	-->
	<sqlMap resource="cn/mldn/ibatis/vo/News.xml" />

</sqlMapConfig>

4、修改News.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 namespace="News">

	<!-- 定义别名,为要映射的包.类名,定义一个别名,方便使用 -->
	<typeAlias alias="News" type="cn.mldn.ibatis.vo.News" />

	<!--
		对返回结果集进行映射。
	-->
	<resultMap id="NewsResult" class="News">
		<result property="id" column="id" />
		<result property="title" column="title" />
		<result property="content" column="content" />
		<result property="counts" column="counts" />
		<result property="postDate" column="post_date" />
	</resultMap>

	<!--
		所有的操作语句都必须定义在映射文件中。 
		查询全部 
		id:表示调用这个语句时的唯一标识
		resultMap:表示返回多条数据,数据按照上面定义的映射来进行转换。
	-->
	<select id="findAllNews" resultMap="NewsResult">
		select * from news
 	</select>

	<!--
		按id查询
		parameterClass:传入的参数类型
		resultClass:表示查询结果为一条数据,类型为News
		当参数只有一个时,名字任意定义。
	-->
	<select id="findNewsById" parameterClass="int" resultClass="News">
		select * from news WHERE id = #id#
	</select>

	<!-- 
		添加操作
		由于需要传递多个参数,因此参数名要与News对象中的属性对应。
	 -->
	<insert id="saveNews" parameterClass="News">
		insert into news (title,content,counts,post_date) VALUES 
		(#title#,#content#,#counts#,#postDate#)
  </insert>

	<!-- 修改 -->
	<update id="updateNews" parameterClass="News">
		update news SET title = #title#,content = #content#,counts = #counts# 
		WHERE id = #id#
  </update>

	<!-- 按id删除-->
	<delete id="deleteNewsById" parameterClass="int">
		delete from
		news where id = #id#
  </delete>

</sqlMap>

5、创建 SqlMapSessionFactory类

package cn.mldn.ibatis.dbc;

import java.io.Reader;
import java.sql.SQLException;

import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
import com.ibatis.sqlmap.client.SqlMapSession;

public class SqlMapSessionFactory {

	private static String CONFIG_FILE_LOCATION = "SqlMapConfig.xml";
	private static final ThreadLocal<SqlMapSession> threadLocal = new ThreadLocal<SqlMapSession>();
	private static SqlMapClient client;
	private static String configFile = CONFIG_FILE_LOCATION;

	static {
		try {
			Reader reader = Resources.getResourceAsReader(CONFIG_FILE_LOCATION);
			client = SqlMapClientBuilder.buildSqlMapClient(reader);
			reader.close();
		} catch (Exception e) {
			System.err.println("%%%% Error Creating SessionFactory %%%%");
			e.printStackTrace();
		}
	}

	private SqlMapSessionFactory() {
	}

	public static SqlMapSession getSession() throws SQLException {
		SqlMapSession session = (SqlMapSession) threadLocal.get();

		if (session == null || session.getCurrentConnection() == null
				|| session.getCurrentConnection().isClosed()) {
			session = client.openSession();
			threadLocal.set(session);
		}

		return session;
	}


	public static void closeSession() {
		SqlMapSession session = (SqlMapSession) threadLocal.get();
		threadLocal.set(null);

		if (session != null) {
			session.close();
		}
	}

5、编写实现类(接口就不贴了)

package cn.mldn.ibatis.dao.impl;

import java.util.List;

import cn.mldn.ibatis.dao.NewsDAO;
import cn.mldn.ibatis.dbc.SqlMapSessionFactory;
import cn.mldn.ibatis.vo.News;

public class NewsDAOImpl implements NewsDAO {

	public boolean doCreate(News news) throws Exception {
		SqlMapSessionFactory.getSession().insert("saveNews", news);
		return true;
	}

	public boolean doDelete(int id) throws Exception {
		SqlMapSessionFactory.getSession().delete("deleteNewsById", id);
		return true;
	}

	public boolean doUpdate(News news) throws Exception {
		SqlMapSessionFactory.getSession().update("updateNews", news);
		return true;
	}

	public List<News> findAll() throws Exception {
		List all = SqlMapSessionFactory.getSession()
				.queryForList("findAllNews");
		return all;
	}

	public News findById(int id) throws Exception {
		News news = (News) SqlMapSessionFactory.getSession().queryForObject(
				"findNewsById", id);
		return news;
	}

}
 
package cn.mldn.ibatis.service.impl;

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

import cn.mldn.ibatis.dao.NewsDAO;
import cn.mldn.ibatis.dao.impl.NewsDAOImpl;
import cn.mldn.ibatis.dbc.SqlMapSessionFactory;
import cn.mldn.ibatis.service.NewsService;
import cn.mldn.ibatis.vo.News;

public class NewsServiceImpl implements NewsService {

	private NewsDAO newsdao = new NewsDAOImpl();

	public boolean doCreate(News news) {
		boolean flag = false;
		try {
			SqlMapSessionFactory.getSession().startTransaction();
			flag = this.newsdao.doCreate(news);
			SqlMapSessionFactory.getSession().commitTransaction();
		} catch (Exception e) {
			e.printStackTrace();
			try {
				SqlMapSessionFactory.getSession().endTransaction();
			} catch (SQLException e1) {
			}
		} finally {
			SqlMapSessionFactory.closeSession();
		}
		return flag;
	}

	public boolean doDelete(int id) {
		boolean flag = false;
		try {
			SqlMapSessionFactory.getSession().startTransaction();
			flag = this.newsdao.doDelete(id);
			SqlMapSessionFactory.getSession().commitTransaction();
		} catch (Exception e) {
			e.printStackTrace();
			try {
				SqlMapSessionFactory.getSession().endTransaction();
			} catch (SQLException e1) {
			}
		} finally {
			SqlMapSessionFactory.closeSession();
		}
		return flag;
	}

	public boolean doUpdate(News news) {
		boolean flag = false;
		try {
			SqlMapSessionFactory.getSession().startTransaction();
			flag = this.newsdao.doUpdate(news);
			SqlMapSessionFactory.getSession().commitTransaction();
		} catch (Exception e) {
			e.printStackTrace();
			try {
				SqlMapSessionFactory.getSession().endTransaction();
			} catch (SQLException e1) {
			}
		} finally {
			SqlMapSessionFactory.closeSession();
		}
		return flag;
	}

	public List<News> findAll() {
		List all = null;
		try {
			all = this.newsdao.findAll();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			SqlMapSessionFactory.closeSession();
		}
		return all;
	}

	public News findById(int id) {
		News news = null;
		try {
			news = this.newsdao.findById(id);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			SqlMapSessionFactory.closeSession();
		}
		return news;
	}
 

 

 

分享到:
评论

相关推荐

    Ibatis 练习Demo和笔记

    在提供的压缩包中,"Ibatis 学习笔记.docx"可能是对以上知识点的详细文档,包含了学习过程中的总结和例子,适合阅读理解。而"IbatisStudy"可能是一个示例项目,包含了一个简单的Ibatis应用场景,如用户管理模块,...

    ibatis 学习笔记

    iBATIS 是一款著名的Java持久层框架,它与Hibernate等全自动化ORM解决方案不同,提供了一种半自动化的处理方式,让开发者对SQL...通过深入理解和熟练使用iBATIS,开发者可以更高效地管理Java应用中的数据持久化工作。

    ibatis学习资料及个人学习笔记,对初学者很有用

    2. 其次,通过学习笔记理解实际应用场景,掌握如何配置和使用Ibatis。 3. 然后,研究示例代码,动手实践,加深理解。 4. 最后,对比分析不同框架,根据项目需求选择最合适的工具。 六、注意事项 在学习Ibatis过程中...

    ibatis在web工程中的应用笔记

    标题 "ibatis在web工程中的应用笔记" 涉及的主要知识点是MyBatis(原名iBatis)在Web应用程序开发中的使用。MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。下面将详细阐述MyBatis的基本...

    ibatis-3-学习笔记.docx

    下面是 iBatis 3 的学习笔记,包括环境配置、Mapper 文件配置、POJO 类设计等内容。 一、环境配置 要使用 iBatis 3,需要在项目中导入相关依赖包。首先,需要将 ojdbc14.jar 和 ibatis-3-core-3.0.0.208.jar 添加...

    ibatis教程学习笔记

    通过本篇学习笔记,我们深入了解了 ibatis 的配置文件结构、常用的操作方式以及一些高级特性如命名空间和缓存机制。这些知识点对于初学者来说至关重要,它们不仅有助于快速掌握 ibatis 的使用方法,还能够帮助开发者...

    ibatis学习笔记(一)

    这篇“ibatis学习笔记(一)”可能是博主对Ibatis基础概念、安装配置以及基本使用的介绍,让我们通过标签“源码”和“工具”来深入探讨Ibatis的相关知识。 首先,Ibatis是一个轻量级的Java ORM(对象关系映射)框架...

    ibatis学习笔记.txt

    ### iBatis 学习笔记知识点总结 #### 一、iBatis 概念与特点 **1.1 iBatis 定义** - **iBatis** 是一个基于 Java 的开源持久层框架,它专注于 SQL 映射,提供了一种将对象与数据库交互过程中的 SQL 语句进行分离的...

    持久层框架ibatis学习笔记

    通过本文的学习笔记,我们可以了解到 iBatis 在简化数据库访问的同时提供了足够的灵活性。尽管 iBatis 相比 Hibernate 在自动化程度上略显不足,但对于需要高度定制 SQL 查询的场景来说,iBatis 的优势十分明显。...

    ibatis学习笔记

    从提供的文档内容来看,作者通过学习笔记的方式记录了ibatis结合Oracle数据库的配置和使用。知识点主要包括以下方面: 1. 配置ibatis环境 - 引入必要的JAR包,包括JDBC驱动和ibatis核心包。 - 设置Oracle数据库...

    iBatis学习笔记

    iBatis,作为一款开源框架,最初由Clinton Begin在2001年创建,并于2002年加入Apache软件基金会,后来更名为...对于初学者而言,掌握iBatis的基本配置和使用方法,将有助于更高效地进行数据库操作,提升开发效率。

    ibatis笔记

    Ibatis中的核心概念包括SqlMapConfig.xml配置文件、SqlMap接口、Mapper XML文件和Statement。SqlMapConfig.xml文件是全局配置文件,包含了数据源、事务管理器、SqlMap接口的配置等信息。SqlMap接口则对应数据库表,...

Global site tag (gtag.js) - Google Analytics