`
zcz123
  • 浏览: 158662 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类

SpringMVC3+MyBatis3整合的笔记

 
阅读更多

在公司基础框架的基础之上增加多数据源的支持,公司框架底层是用hibernate的,现增加mybatis作为底层的一个新的数据源。

1、增加jar包

基础框架采用spring版本是3.1,所以需要根据此版本加入对应的mybatis版本,分别加入mybatis-spring-1.0.2.jar和mybatis-3.0.6.jar即可。

2、增加spring的mybatis配置文件

<!-- 数据库连接池,使用阿里巴巴开源数据库连接 -->
	<bean id="dataSource3" class="com.alibaba.druid.pool.DruidDataSource"
		init-method="init" destroy-method="close">
		<property name="driverClassName">
			<value>oracle.jdbc.driver.OracleDriver</value>
		</property>
		<property name="url">
			<value>jdbc:oracle:thin:@218.15.22.15:1521:orcl</value>
		</property>
		<property name="username">
			<value>callplat123</value>
		</property>
		<property name="password">
			<value>YRwDHYuisdwtEUgxp3rwf8QhYi40hWE+zIWlr6HcmIZfqFRjk662lESHAt0u3vqWFd4XW65yLkJe6M/tQAT88w==</value>
		</property>
		<!-- 数据库解密 -->
		<property name="connectionProperties" value="config.decrypt=true" />
		<property name="filters" value="config" />
		<property name="maxActive" value="50" />
		<property name="initialSize" value="3" />
		<property name="maxWait" value="60000" />
		<property name="minIdle" value="3" />
		<property name="timeBetweenEvictionRunsMillis" value="60000" />
		<property name="minEvictableIdleTimeMillis" value="300000" />
		<property name="validationQuery" value="SELECT 'x' from DUAL" />
		<property name="testWhileIdle" value="true" />
		<property name="testOnBorrow" value="false" />
		<property name="testOnReturn" value="false" />
		<property name="poolPreparedStatements" value="true" />
		<property name="maxPoolPreparedStatementPerConnectionSize" value="50" />
	</bean>


	<bean id="sessionFactory3" class="org.mybatis.spring.SqlSessionFactoryBean">  
        <property name="dataSource" ref="dataSource3" />  
        <!-- 配置mybatis 数据源、别名等信息
        <property name="configLocation" value="classpath:config/mybatis-config-slave.xml" />
         -->
        <property name="mapperLocations" value="classpath*:com/mybatis/*/mapping/*.xml" />  
    </bean>
    
    <!-- DAO接口所在包名,Spring会自动查找其下的类 -->  
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">  
        <property name="basePackage" value="com.mybatis" />  
        <property name="sqlSessionFactory" ref="sessionFactory3"/>
    </bean>

	<!-- 事务配置 -->
	<bean id="transactionManager3" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">  
        <property name="dataSource" ref="dataSource3" />  
    </bean>
	
	<!-- 事务规则 -->
	<tx:advice id="txAdvice3" transaction-manager="transactionManager3">
		<tx:attributes>
			<tx:method name="add*" propagation="REQUIRED" />
			<tx:method name="save*" propagation="REQUIRED" />
			<tx:method name="update*" propagation="REQUIRED" />
			<tx:method name="modify*" propagation="REQUIRED" />
			<tx:method name="delete*" propagation="REQUIRED" />
			<tx:method name="*" read-only="true" />
		</tx:attributes>
	</tx:advice>

	<!-- 仅对service包下面的方法开启事务控制 -->
	<aop:config>
		<aop:pointcut id="interceptorPointCuts3" expression="execution(* com.mybatis..service.*.*(..))" />
		<aop:advisor advice-ref="txAdvice3" pointcut-ref="interceptorPointCuts3" />
	</aop:config>

 3、根据mysql数据库对应表、表到代码的配置文件及依赖的生成工具jar进行生成代码

<?xml version="1.0" encoding="UTF-8"?>    
<!DOCTYPE generatorConfiguration    
  PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"    
  "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">    
<generatorConfiguration>    
<!-- 数据库驱动-->    
    <classPathEntry  location="mysql-connector-java-3.1.14-bin.jar"/>    
    <context id="DB2Tables"  targetRuntime="MyBatis3">    
        <commentGenerator>    
            <property name="suppressDate" value="true"/>    
            <!-- 是否去除自动生成的注释 true:是 : false:否 -->    
            <property name="suppressAllComments" value="true"/>    
        </commentGenerator>    
        <!--数据库链接URL,用户名、密码 -->    
        <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://127.0.0.1:3306/mybatis?useUnicode=true&amp;characterEncoding=utf8" userId="root" password="root">    
        </jdbcConnection>    
        <javaTypeResolver>    
            <property name="forceBigDecimals" value="false"/>    
        </javaTypeResolver>    
        <!-- 生成模型的包名和位置-->    
        <javaModelGenerator targetPackage="com.cn.hnust.entity" targetProject="src">    
            <property name="enableSubPackages" value="true"/>    
            <property name="trimStrings" value="true"/>    
        </javaModelGenerator>    
        <!-- 生成映射文件的包名和位置-->    
        <sqlMapGenerator targetPackage="com.cn.hnust.mapping" targetProject="src">    
            <property name="enableSubPackages" value="true"/>    
        </sqlMapGenerator>    
        <!-- 生成DAO的包名和位置-->    
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.cn.hnust.dao" targetProject="src">    
            <property name="enableSubPackages" value="true"/>    
        </javaClientGenerator>    
        <!-- 要生成的表 tableName是数据库中的表名或视图名 domainObjectName是实体类名-->    
        <table tableName="user_t" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>  
    </context>    
</generatorConfiguration>

 需要依赖到的工具包为mybatis-generator-core-1.3.2.jar和驱动包mysql-connector-java-3.1.14-bin.jar,将jar和配置文件放在一个目录下并在此目录创建src文件夹,打开命令窗口定位到此目录,敲入命令:java -jar mybatis-generator-core-1.3.2.jar -configfile generatorConfig.xml -overwrite 进行生成对应的代码

4、生成的pojo类和xml文件

package com.cn.hnust.entity;

public class User {
    private Integer id;

    private String userName;

    private String password;

    private Integer age;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName == null ? null : userName.trim();
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password == null ? null : password.trim();
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}

                                                  pojo 类

<?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="com.cn.hnust.dao.UserMapper" >
  <resultMap id="BaseResultMap" type="com.cn.hnust.entity.User" >
    <id column="id" property="id" jdbcType="INTEGER" />
    <result column="user_name" property="userName" jdbcType="VARCHAR" />
    <result column="password" property="password" jdbcType="VARCHAR" />
    <result column="age" property="age" jdbcType="INTEGER" />
  </resultMap>
  <sql id="Base_Column_List" >
    id, user_name, password, age
  </sql>
  <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
    select 
    <include refid="Base_Column_List" />
    from user_t
    where id = #{id,jdbcType=INTEGER}
  </select>
  <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
    delete from user_t
    where id = #{id,jdbcType=INTEGER}
  </delete>
  <insert id="insert" parameterType="com.cn.hnust.entity.User" >
    insert into user_t (id, user_name, password, 
      age)
    values (#{id,jdbcType=INTEGER}, #{userName,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR}, 
      #{age,jdbcType=INTEGER})
  </insert>
  <insert id="insertSelective" parameterType="com.cn.hnust.entity.User" >
    insert into user_t
    <trim prefix="(" suffix=")" suffixOverrides="," >
      <if test="id != null" >
        id,
      </if>
      <if test="userName != null" >
        user_name,
      </if>
      <if test="password != null" >
        password,
      </if>
      <if test="age != null" >
        age,
      </if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides="," >
      <if test="id != null" >
        #{id,jdbcType=INTEGER},
      </if>
      <if test="userName != null" >
        #{userName,jdbcType=VARCHAR},
      </if>
      <if test="password != null" >
        #{password,jdbcType=VARCHAR},
      </if>
      <if test="age != null" >
        #{age,jdbcType=INTEGER},
      </if>
    </trim>
  </insert>
  <update id="updateByPrimaryKeySelective" parameterType="com.cn.hnust.entity.User" >
    update user_t
    <set >
      <if test="userName != null" >
        user_name = #{userName,jdbcType=VARCHAR},
      </if>
      <if test="password != null" >
        password = #{password,jdbcType=VARCHAR},
      </if>
      <if test="age != null" >
        age = #{age,jdbcType=INTEGER},
      </if>
    </set>
    where id = #{id,jdbcType=INTEGER}
  </update>
  <update id="updateByPrimaryKey" parameterType="com.cn.hnust.entity.User" >
    update user_t
    set user_name = #{userName,jdbcType=VARCHAR},
      password = #{password,jdbcType=VARCHAR},
      age = #{age,jdbcType=INTEGER}
    where id = #{id,jdbcType=INTEGER}
  </update>
</mapper>

                                                    mybatis-xml配置文件

5、编写单元测试类进行测试表的增删改查

package com.cn.hnust.test;

import javax.annotation.Resource;

import org.apache.log4j.Logger;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import com.cn.hnust.dao.UserMapper;
import com.cn.hnust.entity.User;

@RunWith(SpringJUnit4ClassRunner.class)     //表示继承了SpringJUnit4ClassRunner类  
@ContextConfiguration(locations = {"classpath:spring-mybatis.xml"})
public class TestMyBatis {

	
	private static Logger logger = Logger.getLogger(TestMyBatis.class);  
    @Resource  
    private UserMapper userMapper;
  
  
    @Test  
    public void test() { 
    	logger.info("测试方法");
    	try {
    		User user = userMapper.selectByPrimaryKey(new Integer(1)); 
    		logger.info("user:"+user);
    		if(user != null){
    			System.out.println(user.getUserName()+":"+user.getPassword());
    		}
    		user.setAge(100);
    		user.setUserName("我是中国人");
    		userMapper.updateByPrimaryKey(user);
		} catch (Exception e) {
			e.printStackTrace();
			logger.error(e);
		}
    }
}

 至此,一个简单SpringMVC3+Mybatis3整合到此结束!

分享到:
评论

相关推荐

    springmvc+mybatis 云笔记

    【SpringMVC与MyBatis整合详解】 在现代企业级应用开发中,SpringMVC和MyBatis是两个非常常见的框架。SpringMVC作为Spring框架的一部分,主要用于处理Web层的请求,而MyBatis则是一个优秀的持久层框架,专注于...

    Spring+SpringMVC+Mybatis SSM框架小项目

    SSM框架,即Spring、SpringMVC和Mybatis的整合,是Java开发中常见的Web应用程序框架。这个开源小项目提供了一种便捷的方式,帮助初学者和有经验的开发者理解和实践这三个核心组件的集成。 首先,Spring框架是Java...

    Spring+SpringMVC+Mybatis整合

    SSM指的是Spring+SpringMVC+MyBatis集成的一个Web应用程序开源框架,个人整合SSM的源码以及笔记,该有的注释都写的很详细了,应该能看懂,之前发布过一个,但是因为是自己写的生成代码生成的mapper,有点错误,在...

    传智播客_Springmvc+Mybatis由浅入深笔记与资料

    #### 三、SpringMVC与MyBatis整合实践 1. **环境搭建**: - 导入必要的依赖库:SpringMVC、MyBatis、MySQL驱动等。 - 配置SpringMVC配置文件(如spring-mvc.xml),定义DispatcherServlet、拦截器等。 - 配置...

    SpringMVC+Mybatis学习笔记

    【SpringMVC+Mybatis学习笔记】 SpringMVC和Mybatis是Java开发中常见的两个框架,它们分别负责Web层和持久层的管理。SpringMVC是Spring框架的一部分,提供了强大的模型-视图-控制器(MVC)架构模式,用于构建高性能...

    传智播客SpringMVC+Mybatis由浅入深教案和课堂笔记

    【SpringMVC+Mybatis整合】 SpringMVC和Mybatis的整合可以实现松耦合的MVC架构和数据访问层。SpringMVC可以作为Mybatis的依赖注入容器,负责管理Mybatis的SqlSessionFactory和Mapper接口实例。通过Spring的配置,...

    Springmvc+Mybatis由浅入深笔记

    《Springmvc+Mybatis由浅入深笔记》是传智播客推出的一套全面解析SpringMVC和Mybatis两大主流框架的视频教程配套笔记。笔记旨在帮助初学者和进阶者深入理解这两个技术的核心概念、原理及实际应用,从而提升开发效率...

    终结版--Spring MVC+MYBatis企业应用实战

    本书介绍了 Java EE 领域的两个开源框架: Spring的MVC 和 MyBatis。其中 Spring的版本为 4.2, My Batis的版本是 3.4o 本书的示例建议在 Tomcat 8 上运行。

    spring+hibernate+struts2 +mybatis整合笔记

    ### Spring+Hibernate+Struts2+MyBatis 整合笔记 #### 一、SSM框架简介及整合意义 SSM框架是指Spring、SpringMVC和MyBatis三个开源框架的整合,通常用于快速开发Java Web应用。本篇笔记主要介绍如何将Spring、...

    Java EE 框架整合 开发入门到实战-Spring+Spring MVC+MyBatis微课版复习笔记

    此外,了解Spring框架整合MyBatis及Spring MVC的细节,对于开发基于Java EE的企业级应用非常关键。Spring MVC负责Web层的请求处理,MyBatis则是持久层框架,能够简化数据库操作。熟练掌握这些框架的整合使用,能够...

    传智播客 Springmvc+Mybatis由浅入深 教案和笔记

    【SpringMVC与MyBatis整合】 1. **配置数据源**:在Spring配置文件中定义数据源,用于连接数据库。 2. **配置SqlSessionFactory**:创建SqlSessionFactoryBean,它是MyBatis的工厂类,用于生成SqlSession。 3. **...

    springmvc+mybatis+elementui+vue的模拟添加用户,查询用户

    在本项目中,"springmvc+mybatis+elementui+vue的模拟添加用户,查询用户"是一个基于Java Web技术的简单应用,它整合了Spring MVC、MyBatis、Element UI和Vue.js,用于实现用户数据的增删查改功能。下面将详细讲解...

    传智播客_Springmvc+Mybatis由浅入深全套视频教程-SpringMVC笔记(两天)

    在传智播客提供的“Springmvc+Mybatis由浅入深全套视频教程”中,关于SpringMVC的笔记详细地介绍了这一框架的架构、核心组件、工作原理以及入门程序的环境配置。以下内容基于视频教程中的笔记进行详细知识点的总结。...

    springmvc+mybatis课程资料

    包含教案、源码、课堂笔记等。第一天:springmvc的基础知识 什么是springmvc? springmvc框架原理(掌握) 前端控制器、处理器映射器、处理器适配器、视图解析器 ...springmvc和mybatis整合(掌握)

    springmvc+mybatis+jquery easyui+json+log4j

    3. jQuery EasyUI:jQuery EasyUI 是基于 jQuery 的一个前端框架,提供了丰富的 UI 组件,如表格、表单、对话框等,帮助开发者快速构建用户界面。EasyUI 遵循简洁的 API 设计,使得开发者可以使用较少的代码实现复杂...

    Spring+SpringMVC+MyBatis深入学习及搭建(一)之MyBatis的基础知识

    3. MyBatis的优势: - SQL动态化:MyBatis支持动态SQL,可以在XML或注解中编写条件语句,无需编写大量的if-else逻辑。 - 易于整合:MyBatis可以与Spring无缝集成,实现事务管理和依赖注入。 - 提高性能:预编译的...

    传智播客springMVC的课件+mybatis的课件以及视频源码

    在提供的压缩包中,"SpringMvc笔记和教案"可能包含了关于SpringMVC的详细讲解,涵盖了上述所有知识点,适合初学者系统学习。而"Mybatis"部分可能包括Mybatis的基本概念、配置、使用方法和实战案例,帮助开发者深入...

    SSM框架——详细整合教程(Spring+SpringMVC+MyBatis).zip

    本次为您带来的是最新的 Java 框架零基础从入门到精通的教程笔记项目,无论您是完全没有基础的小白,还是想要进一步提升的开发者,这套教程都将是您的理想之选。 教程内容丰富详实,涵盖了从基础知识的细致讲解,到...

    SpringBoot+SpringMVC+SrpingSecurity+SSM整合.zip

    在"SpringBoot+SpringMVC+SpringSecurity+SSM整合.zip"的学习笔记中,你可能会涉及以下几个关键知识点: 1. SpringBoot的起步依赖和自动配置:理解如何通过添加不同模块的starter依赖来引入所需的Spring功能,以及...

    springmvc_spring_mybatis框架整合文档

    整合springmvc_spring_mybatis框架后整理的学习笔记以及整合方法。

Global site tag (gtag.js) - Google Analytics