`
zhaoyu2288
  • 浏览: 39399 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

MyBatis And Spring Demo

阅读更多
Spring相关配置
//数据源
	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
		<property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"></property>
		<property name="url" value="jdbc:sqlserver://127.0.0.1:1433;databaseName=ibatisDB"></property>
		<property name="username" value="sa"></property>
		<property name="password" value="zhaoyu"></property>
	</bean>	
	//MyBatis支持
	<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
		<property name="configLocation" value="classpath:sqlMapConfig.xml"></property>
		<property name="dataSource" ref="dataSource"></property>
	</bean>
	
	<bean id="dao" class="com.dao.impl.DaoImpl">
		//注入
		<property name="sqlMapClient" ref="sqlMapClient"></property>
	</bean>
	
	//事务管理器
	<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> 
  		<property name="dataSource"> 
  		 <ref local="dataSource"/> 
    	</property> 
 	</bean>	
 	
	//通过引用bean方式配置事物(不是更加方便的设置切入点方式)
 	<bean id="DaoProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"> 
 		 <property name="transactionManager"> 
  			 <ref bean="transactionManager"/> 
  		</property> 
  		<property name="target"> 
  			 <ref local="dao"/> 
  		</property> 
  		<property name="transactionAttributes"> 
 			  <props> 
  				<prop key="search*">PROPAGATION_REQUIRED,readOnly</prop> 
  				<prop key="*">PROPAGATION_REQUIRED</prop> 
  			 </props> 
  		</property> 
 	</bean>

MyBatis相关配置
<?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> 	<!-- 都写在spring配置文件中,这里只需要配置映射文件 -->
	<sqlMap resource="com/entity/User.xml"/> 
</sqlMapConfig> 


实体类
package com.entity;
public class User {
	private int id;
	private String name;
	private int age;
	//省略get set
	@Override
	public String toString() {
		// TODO Auto-generated method stub
		return "编号:"+id+" 姓名:"+name+" 年龄:"+age;
	}	
}


配置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 namespace="user">
	<typeAlias alias="user" type="com.entity.User"/>  //alias别名 type类型

	<select id="getUsers" resultClass="user" >
		<![CDATA[select * from t_user]]>
	</select>
	
	<insert id="insert" parameterClass="user">
		insert into t_user(name,age) values(#name#,#age#)
	</insert>
	
	<update id="update" parameterClass="java.util.Map">
		<![CDATA[update t_user set name=#name#,age=#age# where id = #id#]]>
	</update>
	
	<delete id="delete" parameterClass="int">
		<![CDATA[delete from t_user where id = #id#]]>
	</delete>
</sqlMap>


DAO代码
package com.dao.impl;

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

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

import com.dao.Dao;
import com.entity.User;
import com.ibatis.sqlmap.client.SqlMapExecutor;

public class DaoImpl extends SqlMapClientDaoSupport implements Dao {

	public void save(User user) {
		getSqlMapClientTemplate().insert("insert", user);
	}
	
	public void delete(int id) {
		getSqlMapClientTemplate().delete("delete",id);
	}

	public void update(String name, int age, int id) {
		Map<String,Object> map = new HashMap<String,Object>();
		map.put("name", name);
		map.put("age", age);
		map.put("id", id);
		getSqlMapClientTemplate().update("update",map);
	}
	
	@SuppressWarnings("unchecked")
	public List<User> searchUsers() {
		return getSqlMapClientTemplate().queryForList("getUsers");
	}
	
	/**
	 * 类似hibernate的回调接口,在此是一个demo
	 * @return
	 */
	public List<User> demo(){
		getSqlMapClientTemplate().execute(new SqlMapClientCallback() {		
			public Object doInSqlMapClient(SqlMapExecutor sqlMap) throws SQLException {
				//sqlMap.queryForObject(arg0)
				return null;
			}
		});
		return null;
	}
}


相关调用代码
package com;

import java.util.Iterator;
import java.util.List;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.dao.Dao;
import com.entity.User;

public class Demo {
	
	public static void main(String[] args) {	
		save();
		showUser();
		update();
		delete();
	}
	
	//保存
	public static void save(){
		Dao dao = daoFartory();
		User user = new User("zhaoliang228",24);
		dao.save(user);
	}
	
	//修改
	public static void update(){
		Dao dao = daoFartory();
		dao.update("zl", 100, 5);
	}
	
	public static void delete(){
		Dao dao = daoFartory();
		dao.delete(6);
	}
	
	//查询
	public static void showUser(){
		Dao dao = daoFartory();
		List<User> users = dao.searchUsers();
		Iterator<User> i = users.iterator();
		while(i.hasNext()){
			System.out.println(i.next());
		}
	}
	
	public static Dao daoFartory(){
		ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
		Dao dao = (Dao) ctx.getBean("dao");
		return dao;
	}
}

分享到:
评论
1 楼 SpringLin 2011-12-29  
<![CDATA[update t_user set name=#name#,age=#age# where id = #id#]]>  

mybatis获取参数的方式不是改变了吗? #{name} ,也向下兼容是吧!

相关推荐

    MyBatis+SpringDemo项目

    MyBatis+SpringDemo项目是一个综合性的开发示例,它结合了MyBatis和Spring框架,展示如何在实际开发中整合这两个强大的工具,实现数据访问层(DAO)的操作。在这个项目中,我们将深入探讨MyBatis和Spring的核心概念...

    springboot-mybatis-demo

    【标题】"springboot-mybatis-demo"是一个演示项目,展示了如何在Spring Boot框架下整合MyBatis和MySQL数据库。这个项目是基于现有的示例代码进行调整和改造的,旨在为学习者提供一个基础的实践环境。 【描述】该...

    java-mybatis、springmvc 整合demo源码(druid-demo)

    在"java-mybatis、springmvc 整合demo源码(druid-demo)"中,我们主要探讨的是如何将这两个框架进行无缝集成,并解决在使用@Transactional注解时遇到的事务管理问题。 首先,我们需要了解MyBatis与SpringMVC的整合...

    mybatis+spring maven下 整合 完整demo

    本文将深入探讨这个"mybatis+spring maven下整合完整demo"所涉及的关键知识点,帮助你理解如何在这样的环境中进行开发。 1. **MyBatis**:MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。...

    springMvc+mybatis+springSecurity整合demo

    Spring MVC、MyBatis 和 Spring Security 是 Java Web 开发中常用的三大框架,它们各自负责不同的职责,但在实际项目中常被整合使用以构建强大的企业级应用。本整合 demo 展示了如何将这三个框架协同工作,提供高效...

    mybatis和spring 整合的Demo

    MyBatis和Spring的整合是Java开发中常见的技术组合,它们各自在数据访问层提供了强大的支持。MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射,避免了几乎所有的JDBC代码和手动设置参数以及...

    MyBatis+Spring+Maven的简单整合Demo

    本教程通过一个简单的Demo展示了如何将MyBatis、Spring和Maven这三个流行的技术结合使用。下面将详细介绍这个整合过程中的关键知识点。 首先,**MyBatis** 是一个优秀的持久层框架,它简化了数据库操作,通过SQL...

    MybatisSpring1Demo

    MybatisSpring1Demo是一个关于如何将Mybatis与Spring框架整合的实际示例项目。这个项目旨在展示如何在Java应用中同时使用这两个流行的技术,以便于数据库操作和依赖注入。接下来,我们将详细探讨Mybatis和Spring各自...

    springboot+mybatis 整合Demo下载

    SpringBoot简化了Spring应用的初始搭建以及开发过程,而MyBatis则是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。现在我们来深入探讨如何将这两个框架整合,并通过这个名为"xyspringboot"的Demo来...

    Springmvc+mybatis+spring 系统demo下载

    Springmvc+mybatis+spring 系统demo下载,基于myeclipse + tomcat 开发完成,下载后根据一份简单的使用说明就可以直接运行,代码实现简单的数据增删改查,希望给初学者参考

    最新的struts2 spring mybatis 整合的demo

    这个最新的Struts2 Spring MyBatis整合的Demo项目是一个典型的MVC架构,旨在展示如何将这三者有效地集成在一起。 Struts2作为前端控制器,负责处理HTTP请求,并调度到相应的业务逻辑。它提供了丰富的动作和结果类型...

    SpringMVC+Mybatis demo

    在"SpringMVC+Mybatis demo"中,MyBatis与Spring结合,通过Spring的SqlSessionFactoryBean创建SqlSessionFactory,进一步生成SqlSession实例。Mapper接口的实现通常会使用`@Mapper`注解,这样Spring能够自动扫描并...

    MyBatis+Spring整合示例

    由于Spring官方并未直接提供与MyBatis的集成解决方案,我们需要借助第三方库“mybatis-spring-1.0.0.jar”,这是由MyBatis官方提供的用于Spring框架的适配器。 首先,让我们了解MyBatis和Spring的基本概念。MyBatis...

    spring cloud+mybatis实战案例demo

    Spring cloud + mybatis 案例; Spring Cloud是基于Spring Boot的一整套实现微服务的框架。他提供了微服务开发所需的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群...

    spring3.2.6struts2.3.15MyBatis3整合DEMO

    本DEMO以Spring 3.2.6、Struts 2.3.15和MyBatis 3为技术栈,展示了如何将这三者进行高效整合,实现灵活、松耦合的业务逻辑处理。 首先,Spring作为一款全面的轻量级框架,提供了依赖注入(DI)和面向切面编程(AOP...

    springBoot+mybatis简单demo完整详细版

    在本项目"springBoot+mybatis简单demo完整详细版"中,我们将深入探讨如何使用Spring Boot与MyBatis框架构建一个简单的应用。Spring Boot以其快速启动、自动化配置和开箱即用的特点,大大简化了Java应用程序的开发...

    springmvc-mybatis-spring整合demo

    在"springmvc-mybatis-spring整合demo"中,包含了上述所有配置和代码示例,导入项目后可以直接运行,观察其运行效果。这将帮助开发者快速理解并掌握这三个框架的整合方式,为实际开发提供参考。 总结,Spring MVC、...

    spring MVC3 + mybatis 3 - demo工程

    **Spring MVC3与MyBatis 3整合的Demo工程** Spring MVC和MyBatis是Java Web开发中的两个重要框架,Spring MVC负责控制层,而MyBatis则专注于数据访问层。这个Demo工程提供了如何将两者结合使用的实例,适用于Oracle...

    MyBatis+Spring的简单Demo

    在MyBatis+Spring的Demo中,它会列出所需的jar包,如Spring框架、MyBatis框架以及数据库驱动等。 5. **.project文件**: 这是Eclipse项目的元数据文件,定义了项目的类型、构建配置以及其他属性。在这个Demo中,它...

    spring + springmvc + mybatis 整合 demo 及 mybatis-paginator分页 demo

    "spring + springmvc + mybatis 整合 demo"是开发者们经常进行的一个实践项目,目的是演示如何将这三个框架集成到一起,创建一个完整的Web应用。首先,我们需要配置Spring的ApplicationContext,定义Bean并管理依赖...

Global site tag (gtag.js) - Google Analytics