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 学习笔记.docx"可能是对以上知识点的详细文档,包含了学习过程中的总结和例子,适合阅读理解。而"IbatisStudy"可能是一个示例项目,包含了一个简单的Ibatis应用场景,如用户管理模块,...
iBATIS 是一款著名的Java持久层框架,它与Hibernate等全自动化ORM解决方案不同,提供了一种半自动化的处理方式,让开发者对SQL...通过深入理解和熟练使用iBATIS,开发者可以更高效地管理Java应用中的数据持久化工作。
2. 其次,通过学习笔记理解实际应用场景,掌握如何配置和使用Ibatis。 3. 然后,研究示例代码,动手实践,加深理解。 4. 最后,对比分析不同框架,根据项目需求选择最合适的工具。 六、注意事项 在学习Ibatis过程中...
标题 "ibatis在web工程中的应用笔记" 涉及的主要知识点是MyBatis(原名iBatis)在Web应用程序开发中的使用。MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。下面将详细阐述MyBatis的基本...
下面是 iBatis 3 的学习笔记,包括环境配置、Mapper 文件配置、POJO 类设计等内容。 一、环境配置 要使用 iBatis 3,需要在项目中导入相关依赖包。首先,需要将 ojdbc14.jar 和 ibatis-3-core-3.0.0.208.jar 添加...
通过本篇学习笔记,我们深入了解了 ibatis 的配置文件结构、常用的操作方式以及一些高级特性如命名空间和缓存机制。这些知识点对于初学者来说至关重要,它们不仅有助于快速掌握 ibatis 的使用方法,还能够帮助开发者...
这篇“ibatis学习笔记(一)”可能是博主对Ibatis基础概念、安装配置以及基本使用的介绍,让我们通过标签“源码”和“工具”来深入探讨Ibatis的相关知识。 首先,Ibatis是一个轻量级的Java ORM(对象关系映射)框架...
### iBatis 学习笔记知识点总结 #### 一、iBatis 概念与特点 **1.1 iBatis 定义** - **iBatis** 是一个基于 Java 的开源持久层框架,它专注于 SQL 映射,提供了一种将对象与数据库交互过程中的 SQL 语句进行分离的...
通过本文的学习笔记,我们可以了解到 iBatis 在简化数据库访问的同时提供了足够的灵活性。尽管 iBatis 相比 Hibernate 在自动化程度上略显不足,但对于需要高度定制 SQL 查询的场景来说,iBatis 的优势十分明显。...
从提供的文档内容来看,作者通过学习笔记的方式记录了ibatis结合Oracle数据库的配置和使用。知识点主要包括以下方面: 1. 配置ibatis环境 - 引入必要的JAR包,包括JDBC驱动和ibatis核心包。 - 设置Oracle数据库...
iBatis,作为一款开源框架,最初由Clinton Begin在2001年创建,并于2002年加入Apache软件基金会,后来更名为...对于初学者而言,掌握iBatis的基本配置和使用方法,将有助于更高效地进行数据库操作,提升开发效率。
Ibatis中的核心概念包括SqlMapConfig.xml配置文件、SqlMap接口、Mapper XML文件和Statement。SqlMapConfig.xml文件是全局配置文件,包含了数据源、事务管理器、SqlMap接口的配置等信息。SqlMap接口则对应数据库表,...