(可以跑通,有数据库的 )mybatis+mysql+springmvc + multidatasource+Atomikos 多数据源

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:   本文 由于上一篇 mybatis+mysql+springmvc + multidatasource+mchange 没有跑通 换另一种 不是aop 注入写的文章 看过这一篇博客的,可以看看上一篇 ,帮我找到错误。

 

本文 由于上一篇 mybatis+mysql+springmvc + multidatasource+mchange 没有跑通 换另一种 不是aop 注入写的文章 看过这一篇博客的,可以看看上一篇 ,帮我找到错误。。。。。 

 

 

自动生成 代码 (自动生成mysql+springmvc + mybatis ) 

http://knight-black-bob.iteye.com/blog/2208162

 http://download.csdn.net/download/knight_black_bob/9226373

 

mybatis+mysql+springmvc + multidatasource+Atomikos 多数据源 

下载 :http://download.csdn.net/download/knight_black_bob/9233289

 

 

jar  包括

Atomikos的: 
transactions-jdbc 
transactions-jta 
transactions-api 
transactions 
atomikos-utils 

 

使用 maven

<dependency>
	<groupId>com.atomikos</groupId>
	<artifactId>transactions-jdbc</artifactId>
	<version>3.7.0</version>
</dependency>
<dependency>
	<groupId>javax.transaction</groupId>
	<artifactId>jta</artifactId>
	<version>1.1</version>
</dependency>

 

 

 



 

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:aop="http://www.springframework.org/schema/aop"
	xmlns:cache="http://www.springframework.org/schema/cache"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:jee="http://www.springframework.org/schema/jee"
	xmlns:jms="http://www.springframework.org/schema/jms" xmlns:lang="http://www.springframework.org/schema/lang"
	xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:oxm="http://www.springframework.org/schema/oxm"
	xmlns:p="http://www.springframework.org/schema/p" xmlns:task="http://www.springframework.org/schema/task"
	xmlns:tx="http://www.springframework.org/schema/tx" xmlns:util="http://www.springframework.org/schema/util"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd    
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd    
    http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache-3.1.xsd    
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd    
    http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.1.xsd    
    http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.1.xsd    
    http://www.springframework.org/schema/jms http://www.springframework.org/schema/jms/spring-jms-3.1.xsd    
    http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang-3.1.xsd    
    http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd    
    http://www.springframework.org/schema/oxm http://www.springframework.org/schema/oxm/spring-oxm-3.1.xsd    
    http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.1.xsd    
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd    
    http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.1.xsd">

	<context:annotation-config />
	<aop:aspectj-autoproxy proxy-target-class="true" />

    <context:component-scan base-package="cn.com.oneweb" />  
    <context:component-scan base-package="cn.com.twoweb" />  
    <context:component-scan base-package="cn.com.baoy.controller" />
	

	<bean id="propertyConfigurer"
		class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
		<property name="location" value="classpath:db-config.properties" />
	</bean>


	<bean id="dataSourceOne" class="com.atomikos.jdbc.AtomikosDataSourceBean" init-method="init" destroy-method="close">  
	    <property name="uniqueResourceName" value="ds1"/>  
	    <property name="xaDataSourceClassName" value="com.mysql.jdbc.jdbc2.optional.MysqlXADataSource"/>  
	    <property name="xaProperties">  
	        <props>  
	            <prop key="url">jdbc:mysql://localhost:3306/database?useUnicode=true&amp;characterEncoding=utf8</prop>  
	            <prop key="user">root</prop>  
	            <prop key="password">root</prop>  
	        </props>  
	    </property>  
	    <property name="minPoolSize" value="10" />  
	    <property name="maxPoolSize" value="100" />  
	    <property name="borrowConnectionTimeout" value="30" />  
	    <property name="testQuery" value="select 1" />  
	    <property name="maintenanceInterval" value="60" />  
	</bean>


	<bean id="dataSourceTwo" class="com.atomikos.jdbc.AtomikosDataSourceBean" init-method="init" destroy-method="close">  
	     <property name="uniqueResourceName" value="ds2"/>  
	    <property name="xaDataSourceClassName" value="com.mysql.jdbc.jdbc2.optional.MysqlXADataSource"/>  
	    <property name="xaProperties">  
	        <props>  
	            <prop key="url">jdbc:mysql://localhost:3306/database2?useUnicode=true&amp;characterEncoding=utf8</prop>  
	            <prop key="user">root</prop>  
	            <prop key="password">root</prop>  
	        </props>  
	    </property>  
	    <property name="minPoolSize" value="10" />  
	    <property name="maxPoolSize" value="100" />  
	    <property name="borrowConnectionTimeout" value="30" />  
	    <property name="testQuery" value="select 1" />  
	    <property name="maintenanceInterval" value="60" />  
	</bean>
    
	<!-- <bean id="dataSourceTwo" class="com.mchange.v2.c3p0.ComboPooledDataSource"
		destroy-method="close">
		<property name="driverClass" value="${two.jdbc.driverClass}" />
		<property name="jdbcUrl" value="${two.jdbc.url}" />
		<property name="user" value="${two.jdbc.user}" />
		<property name="password" value="${two.jdbc.password}" />
		<property name="initialPoolSize" value="${two.jdbc.initialPoolSize}" />
		<property name="minPoolSize" value="${two.jdbc.minPoolSize}" />
		<property name="maxPoolSize" value="${two.jdbc.maxPoolSize}" />
		<property name="checkoutTimeout" value="${two.jdbc.checkoutTimeout}" />
		<property name="idleConnectionTestPeriod" value="${two.jdbc.idleConnectionTestPeriod}" />
		<property name="maxIdleTime" value="${two.jdbc.maxIdleTime}" />
		<property name="maxStatements" value="${two.jdbc.maxStatements}" />
		<property name="testConnectionOnCheckout" value="${two.jdbc.testConnectionOnCheckout}" />
	</bean> -->

	 

</beans>   

 

applicationContext-mybatis.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:aop="http://www.springframework.org/schema/aop"
	xmlns:cache="http://www.springframework.org/schema/cache"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:jee="http://www.springframework.org/schema/jee"
	xmlns:jms="http://www.springframework.org/schema/jms" xmlns:lang="http://www.springframework.org/schema/lang"
	xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:oxm="http://www.springframework.org/schema/oxm"
	xmlns:p="http://www.springframework.org/schema/p" xmlns:task="http://www.springframework.org/schema/task"
	xmlns:tx="http://www.springframework.org/schema/tx" xmlns:util="http://www.springframework.org/schema/util"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd    
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd    
    http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache-3.1.xsd    
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd    
    http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.1.xsd    
    http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.1.xsd    
    http://www.springframework.org/schema/jms http://www.springframework.org/schema/jms/spring-jms-3.1.xsd    
    http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang-3.1.xsd    
    http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd    
    http://www.springframework.org/schema/oxm http://www.springframework.org/schema/oxm/spring-oxm-3.1.xsd    
    http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.1.xsd    
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd    
    http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.1.xsd">
  
	 <!-- 创建SqlSessionFactory,同时指定数据源 -->  
   <!--  <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">  
        <property name="dataSource" ref="dataSource"/>
        <property name="mapperLocations" value="classpath*:cn/com/*/mapper/*.xml" />
    </bean>  
    
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="cn.com.*.dao" />
    </bean> -->
    
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<property name="basePackage" value="cn.com.oneweb.dao" />
		<property name="sqlSessionFactory" ref="sqlSessionFactory1"/>
	</bean>
	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<property name="basePackage" value="cn.com.twoweb.dao" />
		<property name="sqlSessionFactory" ref="sqlSessionFactory2"/>
	</bean>
    
    
    <bean id="sqlSessionFactory1" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSourceOne"/>
		<property name="mapperLocations" value="classpath*:cn/com/oneweb/mapper/*.xml" />
	</bean>
	<bean id="sqlSessionFactory2" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSourceTwo"/>
		<property name="mapperLocations" value="classpath*:cn/com/twoweb/mapper/*.xml" />
	</bean>
</beans>   

 

springmvc-servlet.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context"
	xmlns:oxm="http://www.springframework.org/schema/oxm"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
				http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
				http://www.springframework.org/schema/oxm http://www.springframework.org/schema/oxm/spring-oxm-3.0.xsd
				http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
				http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd">
	<!-- 激活Spring注解方式:自动扫描,并注入bean -->
	<context:component-scan base-package="cn.com.baoy.controller" /> 

	
	<!-- 配置视图解析 -->
     <bean  
        class="org.springframework.web.servlet.view.InternalResourceViewResolver"  
        p:prefix="" p:suffix=".jsp">  
        <property name="order" value="0" />  
    </bean> 
	 <!-- 默认的注解映射的支持 -->
	<mvc:annotation-driven/>
	
	
	 
	
</beans>

 

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee" xmlns:jsp="http://java.sun.com/xml/ns/javaee/jsp"
	xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
	version="3.0">
	<display-name></display-name>

	<!-- welcome page -->
	<welcome-file-list>
		<welcome-file>/back/jsp/main.jsp</welcome-file>
	</welcome-file-list>


	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:applicationContext*.xml</param-value>
	</context-param>
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>




	<!-- springmvc -->
	<servlet>
		<servlet-name>springMVC</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>classpath:springMVC-servlet.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>springMVC</servlet-name>
		<url-pattern>*.do</url-pattern>
	</servlet-mapping>



</web-app>

 

UserDao

package cn.com.oneweb.dao;
import java.util.List;
import cn.com.baoy.bean.User;


public interface UserDao {

	 //查所有
	 public List<User> allUser();

	 //删除
	 public void delUser(int userId);

	 //获取一个form
	 public  User  user(int  userId);

	 //修改
	 public void updateUser(User  user);

	 //添加
	 public void addUser(User  user);

}

 

Mapper.xml

<?xml version="1.0" encoding="UTF-8"?>    
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >    
<mapper namespace="cn.com.oneweb.dao.UserDao">   

    <select id="allUser" resultType="cn.com.baoy.bean.User">   
    	select * from t_user   
    </select>   

    <delete id="delUser" parameterType="int">   
    	delete from t_user where userId = #{ userId}   
    </delete>   
    <insert id="addUser" parameterType="cn.com.baoy.bean.User">   
		INSERT INTO t_user   
		(userId,userName,password,tel,sex,description)   
		VALUE (null,#{userName},#{password},#{tel},#{sex},#{description})   
	</insert>   

	<select id="user" resultType="cn.com.baoy.bean.User">   
    	select * from t_user where  userId = #{ userId}   
    </select>   

	 <update id="updateUser" parameterType="cn.com.baoy.bean.User" >   
		update t_user
		 <set>   
			<if test="userName != null ">userName = #{userName},</if>   
			<if test="password != null ">password = #{password},</if>   
			<if test="tel != null ">tel = #{tel},</if>   
			<if test="sex != null ">sex = #{sex},</if>   
			<if test="description != null ">description = #{description},</if>   
		</set>   
		where   userId = #{ userId}   
	</update>	   

</mapper>   

 

service 

package cn.com.oneweb.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import cn.com.baoy.bean.User; 
import cn.com.oneweb.dao.UserDao;

@Service
 public class UserService {


   @Autowired
   UserDao userDao;


   public List<User> allUser(){
	     return userDao.allUser();
   }

   public void delUser(int userId){
	   userDao.delUser(userId);
   }

   public User user(int userId){
	   return userDao.user(userId);
   }

   public void updateUser(User user){
	   userDao.updateUser(user);
   }

   public void addUser(User user){
   	userDao.addUser(user);
   }

}

 

 

controller

import java.util.List;

import javax.servlet.http.HttpSession;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import cn.com.baoy.bean.User; 
import cn.com.oneweb.service.UserService;
import cn.com.twoweb.service.User2Service;

@Controller
public class UserController {

      
      @Autowired
      User2Service user2Service;
      @Autowired
      UserService userService;

      @RequestMapping(value = "/userView.do")
      public String userView(ModelMap modelMap,String pageNo, String choice, HttpSession session){
            List<User> userList = userService.allUser();
            List<User> userList2 = user2Service.allUser();
            userList.addAll(userList2);
           modelMap.put("userList", userList);
           return "back/jsp/user/userView";
     }

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

捐助开发者

在兴趣的驱动下,写一个免费的东西,有欣喜,也还有汗水,希望你喜欢我的作品,同时也能支持一下。 当然,有钱捧个钱场(右上角的爱心标志,支持支付宝和PayPal捐助),没钱捧个人场,谢谢各位。



 
 
 谢谢您的赞助,我会做的更好!

 

 

 

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
3天前
|
关系型数据库 MySQL 分布式数据库
《MySQL 简易速速上手小册》第6章:MySQL 复制和分布式数据库(2024 最新版)
《MySQL 简易速速上手小册》第6章:MySQL 复制和分布式数据库(2024 最新版)
25 2
|
19天前
|
SQL 数据可视化 关系型数据库
轻松入门MySQL:深入探究MySQL的ER模型,数据库设计的利器与挑战(22)
轻松入门MySQL:深入探究MySQL的ER模型,数据库设计的利器与挑战(22)
103 0
|
15天前
|
存储 关系型数据库 MySQL
MySQL基础入门:数据库操作全攻略
MySQL基础入门:数据库操作全攻略
44 0
|
15天前
|
关系型数据库 MySQL 数据库
卸载云服务器上的 MySQL 数据库
卸载云服务器上的 MySQL 数据库
31 0
|
1天前
|
SQL 存储 关系型数据库
数据库开发之mysql前言以及详细解析
数据库开发之mysql前言以及详细解析
6 0
|
5天前
|
SQL 关系型数据库 MySQL
MySQL环境搭建——“MySQL数据库”
MySQL环境搭建——“MySQL数据库”
|
5天前
|
SQL NoSQL 关系型数据库
初识MySQL数据库——“MySQL数据库”
初识MySQL数据库——“MySQL数据库”
|
8天前
|
关系型数据库 MySQL 数据库
数据库基础(mysql)
数据库基础(mysql)
|
8天前
|
SQL 关系型数据库 数据库
【后端面经】【数据库与MySQL】SQL优化:如何发现SQL中的问题?
【4月更文挑战第12天】数据库优化涉及硬件升级、操作系统调整、服务器/引擎优化和SQL优化。SQL优化目标是减少磁盘IO和内存/CPU消耗。`EXPLAIN`命令用于检查SQL执行计划,关注`type`、`possible_keys`、`key`、`rows`和`filtered`字段。设计索引时考虑外键、频繁出现在`where`、`order by`和关联查询中的列,以及区分度高的列。大数据表改结构需谨慎,可能需要停机、低峰期变更或新建表。面试中应准备SQL优化案例,如覆盖索引、优化`order by`、`count`和索引提示。优化分页查询时避免大偏移量,可利用上一批的最大ID进行限制。
32 3
|
9天前
|
存储 关系型数据库 MySQL
【后端面经】【数据库与MySQL】为什么MySQL用B+树而不用B树?-02
【4月更文挑战第11天】数据库索引使用规则:`AND`用`OR`不用,正用反不用,范围中断。索引带来空间和内存代价,包括额外磁盘空间、内存占用和数据修改时的维护成本。面试中可能涉及B+树、聚簇索引、覆盖索引等知识点。MySQL采用B+树,因其利于范围查询和内存效率。数据库不使用索引可能因`!=`、`LIKE`、字段区分度低、特殊表达式或全表扫描更快。索引与NULL值处理在不同数据库中有差异,MySQL允许NULL在索引中的使用。
12 3