Spring、Ibatis结合MySQL数据库的使用方法

Ibatis是MyBatis的前身,它是一个开源的持久层框架。它的核心是SqlMap——将实体Bean跟关系数据库进行映射,将业务代码和SQL语句的书写进行分开。Ibatis是“半自动化”的ORM持久层框架。这里的“半自动化”是相对Hibernate等提供了全面的数据库封装机制的“全自动化”ORM实现而言的,“全自动”ORM实现了POJO与数据库表字段之间的映射并且实现了SQL的自动生成和执行。而Ibatis的着力点,则在于POJO与SQL之间的映射关系,即Ibatis并不会为程序员在运行期自动生成并执行SQL,具体的SQL语句需要程序员编写,然后通过映射配置文件将SQL语句所需的参数和返回的结果字段映射到指定POJO中。本篇博客演示了Spring、Ibatis结合MySQL数据库的使用方法:

工程结构如下图:

由于该例子介绍的比较全面,文件比较多,这里只给出上图标出的三个文件中的代码,完整的源码可通过点击本文最下面的超链接下载:

StudentDao.java文件中的代码:

package com.ghj.dao.imp;

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

import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;

import com.ghj.dao.IStudentDao;
import com.ghj.vo.Student;

/**
 * 学生管理数据访问层接口实现类
 *
 * @author 高焕杰
 */
public class StudentDao extends SqlMapClientDaoSupport implements IStudentDao {

	/**
	 * 添加学生信息
	 *
	 * @author 高焕杰
	 */
	@Override
	public boolean add(Student student) throws SQLException{
		return getSqlMapClientTemplate().update("add", student) > 0;
	}

	/**
	 * 依据用户名删除学生信息
	 *
	 * @author 高焕杰
	 */
	@Override
	public boolean deleteByUserName(String userName) throws SQLException{
		return getSqlMapClientTemplate().delete("deleteByUserName", userName) > 0;
	}

	/**
	 * 依据用户名更新密码
	 *
	 * @author 高焕杰
	 */
	@Override
	public boolean updatePasswordByUserName(String userName, String password) throws SQLException{
		Map<String, Object> params = new HashMap<String, Object>();
		params.put("userName", userName);
		params.put("password", password);
		return getSqlMapClientTemplate().update("updatePasswordByUserName", params) > 0;
	}

	/**
	 * 根据学生用户名查询学生信息
	 *
	 * @author 高焕杰
	 */
	@Override
	public Student findByUserName(String userName) throws SQLException{
		return (Student)getSqlMapClientTemplate().queryForObject("findByUserName", userName);
	}

	/**
	 * 查询所有学生信息
	 *
	 * @author 高焕杰
	 */
	@Override
	@SuppressWarnings("unchecked")
	public List<Student> findAll() throws SQLException{
		return getSqlMapClientTemplate().queryForList("findAll", null);
	}
}

application-context.xml文件中的代码:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
	    http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
	    http://www.springframework.org/schema/tx
	    http://www.springframework.org/schema/tx/spring-tx-3.1.xsd"
	default-autowire="byName" default-lazy-init="false">

	<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" lazy-init="false" destroy-method="close">
		<property name="driverClass" value="com.mysql.jdbc.Driver"></property>
		<property name="jdbcUrl" value="jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf-8"></property>
		<property name="user" value="root"></property>
		<property name="password" value=""></property>
		<property name="acquireIncrement" value="5"></property>
		<property name="initialPoolSize" value="5"></property>
		<property name="minPoolSize" value="5"></property>
		<property name="maxPoolSize" value="20"></property>
		<property name="maxStatements" value="100"></property>
		<property name="numHelperThreads" value="10"></property>
		<property name="maxIdleTime" value="60"></property>
	</bean>

    <bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
  		<property name="configLocation">
            <value>classpath:config/sqlMapConfig.xml</value>
        </property>
  		<property name="dataSource" ref="dataSource"/>
	</bean>

	<bean id="studentDao" class="com.ghj.dao.imp.StudentDao">
  		<property name="sqlMapClient">
    		<ref bean="sqlMapClient"/>
  		</property>
	</bean>

	<!-- Spring中配置事务操作:在Spring中实现事务操作有多种方式,其中以注解的方式最为常用,该种方式需要在需要配置事务操作的方法上添加@Transactional注释   -->
    <bean id="dataSourceTransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource" />
    </bean>
	<tx:annotation-driven transaction-manager="dataSourceTransactionManager" />
</beans>

student.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>
	<!-- 为Student类设置一个别名 -->
	<typeAlias alias="student" type="com.ghj.vo.Student"/>

	<!-- 配置表和实体Bean之间的映射关系 -->
	<resultMap id="studentMap" class="com.ghj.vo.Student">
		<result property="id" column="id"/>
		<result property="userName" column="user_name"/>
		<result property="password" column="password"/>
		<result property="state" column="state"/>
	</resultMap>

	<!-- 添加学生信息 -->
	<insert id="add" parameterClass="student">
		insert into student values(#id#, #userName#, #password#, #state#)
	</insert>

	<!-- 依据用户名删除学生信息 -->
	<delete id="deleteByUserName" parameterClass="java.lang.String">
	    delete from student where user_name=#userName#
	</delete>

	<!-- 依据用户名更新密码 -->
	<update id="updatePasswordByUserName" parameterClass="java.util.HashMap">
        update student set password=#password# where user_name=#userName#
	</update>

	<!-- 根据学生用户名查询学生信息 -->
	<select id="findByUserName" parameterClass="string" resultMap="studentMap">
		select * from student where user_name=#userName#
	</select>

	<!-- 查询所有学生信息 -->
	<select id="findAll" resultMap="studentMap">
		select * from student
	</select>
</sqlMap>

0分下载该示例代码

时间: 2025-01-19 23:17:26

Spring、Ibatis结合MySQL数据库的使用方法的相关文章

Ibatis结合MySQL数据库的使用方法

Ibatis是MyBatis的前身,它是一个开源的持久层框架.它的核心是SqlMap--将实体Bean跟关系数据库进行映射,将业务代码和SQL语句的书写进行分开.Ibatis是"半自动化"的ORM持久层框架.这里的"半自动化"是相对Hibernate等提供了全面的数据库封装机制的"全自动化"ORM实现而言的,"全自动"ORM实现了POJO与数据库表字段之间的映射并且实现了SQL的自动生成和执行.而Ibatis的着力点,则在于P

如何处理Spring、Ibatis结合MySQL数据库使用时的事务操作

Ibatis是MyBatis的前身,它是一个开源的持久层框架.它的核心是SqlMap--将实体Bean跟关系数据库进行映射,将业务代码和SQL语句的书写进行分开.Ibatis是"半自动化"的ORM持久层框架.这里的"半自动化"是相对Hibernate等提供了全面的数据库封装机制的"全自动化"ORM实现而言的,"全自动"ORM实现了POJO与数据库表字段之间的映射并且实现了SQL的自动生成和执行.而Ibatis的着力点,则在于P

如何处理Ibatis结合MySQL数据库使用时的事务操作

Ibatis是MyBatis的前身,它是一个开源的持久层框架.它的核心是SqlMap--将实体Bean跟关系数据库进行映射,将业务代码和SQL语句的书写进行分开.Ibatis是"半自动化"的ORM持久层框架.这里的"半自动化"是相对Hibernate等提供了全面的数据库封装机制的"全自动化"ORM实现而言的,"全自动"ORM实现了POJO与数据库表字段之间的映射并且实现了SQL的自动生成和执行.而Ibatis的着力点,则在于P

mysql 数据库远程访问设置方法

摘自: http://www.iteye.com/topic/418151 mysql数据库远程访问设置方法 1.修改localhost更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改成"%" mysql>use mysql; mysql>update user set host = '%' where user = 'root'; mysql

MySQL数据库多种安装方法及企业级安装实践

本文来自老男孩老师第三本书籍著作<老男孩的MySQL私房菜>第三章内容分享! 3.1 MySQL数据库的安装方法及选择 在当今的互联网企业里,MySQL数据库大多运行在Linux系列操作系统上,当然,你也可以运行在Windows/Unix等商业操作系统上,本书主要以国内互联网公司应用最多的数据库服务操作系统--CentOS6最新版(6.8)x86_64 Linux系统为例进行讲解,使用其他系统的读者同样可以从本书受益! 即使是在CentOS 6 x86_64 Linux系统环境下,若应用场景不

MySql数据库乱码解决方法

MySql数据库乱码解决方法 解决乱码问题一个原则:存取系统使用一致的编码规则. 多使用mysql的原生命令行,这样才能做更多的事情. ? 第一步: 确认应用系统需要使用的编码 java的默认编码是跟随系统的,有的说是默认UNICode,在java中可以使用 String defaultCharsetName=Charset.defaultCharset().displayName();显示编码. 第二步: 确认并设置MySql的数据库的编码 1. 显示编码,简单的方法命令是:status; 或

ASP 连接 MySQL 数据库两种方法

一般都是用myodbc来连接.首先,在系统中安装 Mysql 的ODBC数据库驱动.如安装稳定版本是3.51.下载地址是:http://dev.mysql.com/downloads/connector/odbc/3.51.html. 下载安装好后.在控制面板-->管理工具-->数据源 (ODBC)中的“驱动程序”页中如果有MySQL ODBC 3.51 Driver就说明驱动已经安装成功,就可以开始写程序了. 下面是我测试时使用的程序,里面有说明就不再介绍了. 方法一: <% '设置M

数据库调优教程(十三) MySQL数据库其他优化方法

六.           MySQL数据库其他优化方法 最后一章,谈谈前面没有涉及的一些优化方法. 1.      My.ini配置文件 这里只介绍两个最重要的,其他的不过多介绍. 1)    配置 最大连接数 默认为100,建议设为1000 2)   配置 缓存 在my.ini的[mysqld]节点开启查询缓存,配置如下 query_cache_size = 268435456 query_cache_type = 1 query_cache_limit = 1048576 2.      使

在Eclipse中使用JDBC访问MySQL数据库的配置方法

在Eclipse中使用JDBC访问MySQL数据库的配置方法 分类: DATABASE 数据结构与算法2009-10-10 16:37 5313人阅读 评论(10) 收藏 举报 jdbcmysql数据库eclipsewordpressproperties 这是一篇JDBC的使用入门文章,主要内容是如何在Eclipse中使用MySQL的JDBC驱动程序. 要使用JDBC访问MySQL的数据库,或者是其他类型的数据库,必须要有这种数据库系统的JDBC驱动程序.通常,JDBC驱动程序是由数据库开发商制