zoukankan      html  css  js  c++  java
  • 第六作业 持久层框架mybatis小记

    1.mybatis和Hibernate的比较

       首先Mybatis和Hibernate相比的优点是动态SQL,轻量级的框架。在整合其他框架的时候可以省去Dao的实现。轻量级,动态SQL,省去Dao层的实现,使Mybatis比较受欢迎。

    2.Myeclipse使用数据库表生成实体类和映射文件需要应如相关的jar包,配置Mybatis启动的时候加载相应的jar包路径。

       a.首先下载相应的jar包到本地放到Myeclipse的安装目录下

       

       新建一个文件放Myeclipse启动时加载的路径

      

        打开添加加载的路径

    新建配置文件将配置文件名为generatorConfig.xml

    相应的配置文件代码如下:

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <!DOCTYPE generatorConfiguration
     3   PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
     4   "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
     5 
     6 <generatorConfiguration>
     7        <!--
     8     <properties resource="conn.properties" />
     9       -->
    10       <!-- 处理1,连接数据库的jar包的位置 -->
    11      <classPathEntry location="E:myeclipselibmysql-connector-java-5.1.26-bin.jar"/>
    12     <!-- 指定运行环境是mybatis3的版本 -->
    13     <context id="testTables" targetRuntime="MyBatis3">
    14 
    15         <commentGenerator>
    16         <!-- 是否取消注释 -->
    17             <property name="suppressAllComments" value="true" />
    18              <!-- 是否生成注释代时间戳 -->
    19             <property name="suppressDate" value="true" />
    20         </commentGenerator>
    21         <!--处理2 jdbc 连接信息 -->
    22         <jdbcConnection driverClass="com.mysql.jdbc.Driver"
    23             connectionURL="jdbc:mysql://localhost:3306/scm32?useUnicode=true&amp;characterEncoding=UTF-8" userId="scott" password="orcl">
    24         </jdbcConnection>
    25         
    26         <!-- 处理3 -->
    27         <!-- targetPackage指定模型在生成在哪个包 ,targetProject指定项目的src,-->        
    28         <javaModelGenerator targetPackage="cn.hp.scm.entity"
    29             targetProject="scm32/src">
    30             <!-- 去除字段前后空格 -->
    31             <property name="trimStrings" value="false" />
    32         </javaModelGenerator>
    33         <!--处理4   配置SQL映射文件生成信息 -->
    34         <sqlMapGenerator targetPackage="cn.hp.scm.dao"
    35             targetProject="scm32/src" />
    36         <!--配置dao接口生成信息-->
    37         <javaClientGenerator type="XMLMAPPER" targetPackage="cn.hp.scm.dao" targetProject="scm32/src" />
    38         
    39         <!-- 指明那些表要生成相应的实体,不能生成表多次,会追加在原来额上面去。 -->
    40         <!-- <table tableName="account" domainObjectName="Account"/>
    41             
    42         <table tableName="supplier" domainObjectName="Supplier"/> -->
    43         
    44         <table tableName="goods" domainObjectName="Goods"/> 
    45         
    46     </context>
    47 </generatorConfiguration>
    View Code

    右键如下

    点击生成配置文件和相应的实体类。但这里对生成的实体类和映射文件做相应的处理

    一个小的单元测试:

     1 package cn.hp.scm.test;
     2 
     3 import org.junit.AfterClass;
     4 import org.junit.BeforeClass;
     5 import org.junit.Test;
     6 import org.springframework.context.ApplicationContext;
     7 import org.springframework.context.support.ClassPathXmlApplicationContext;
     8 
     9 import cn.hp.scm.dao.impl.DeptDaoImpl;
    10 import cn.hp.scm.entity.Dept;
    11 
    12 
    13 public class TestDeptDao {
    14 
    15     //@Resource //这里没法使用,后继版本有其它方式可以注入
    16     static private DeptDaoImpl deptDao;
    17     @BeforeClass
    18     public static void setUpBeforeClass() throws Exception {
    19         ApplicationContext context =new ClassPathXmlApplicationContext("applicationContext.xml");
    20         deptDao=(DeptDaoImpl) context.getBean("deptDao");
    21     }
    22 
    23     @AfterClass
    24     public static void tearDownAfterClass() throws Exception {
    25     }
    26 
    27     @Test
    28     public void testSelectDept() {
    29         System.out.println(deptDao.selectDept(1));
    30     }
    31 
    32     @Test
    33     public void testInsertDept() {
    34         Dept dept=new Dept();
    35         //dept.setDeptId(117);
    36         dept.setDeptName("name117");
    37         dept.setDeptAddress("address117");
    38         System.out.println("受影响行数:"+deptDao.insertDept(dept));
    39     }
    40 }
    View Code

    首先应该加入相应的配置文件,及时数据库连接文件。

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <beans
     3     xmlns="http://www.springframework.org/schema/beans"
     4     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     5     xmlns:tx="http://www.springframework.org/schema/tx"
     6     xmlns:aop="http://www.springframework.org/schema/aop"
     7     xmlns:context="http://www.springframework.org/schema/context"
     8     xmlns:p="http://www.springframework.org/schema/p"
     9     xsi:schemaLocation="http://www.springframework.org/schema/beans 
    10     http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
    11     http://www.springframework.org/schema/context 
    12     http://www.springframework.org/schema/context/spring-context-3.2.xsd
    13     http://www.springframework.org/schema/tx 
    14     http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
    15     http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd">
    16 
    17     
    18     <!-- 配置数据源,记得去掉myBatis-config.xml的数据源相关配置 -->
    19     <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">            
    20         <property name="driverClass" value="com.mysql.jdbc.Driver" />
    21         <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/scm32?useUnicode=true&amp;characterEncoding=UTF-8" />
    22         <property name="user" value="scott" />
    23         <property name="password" value="orcl" />    
    24     </bean>
    25     
    26     <!-- 配置session工厂,mybatis喜欢在前面加上sql因为他是基于Sql的映射框架,配置数据源读取xml文件 -->
    27     <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    28         <property name="dataSource" ref="dataSource" />
    29         <property name="configLocation" value="classpath:myBatis-config.xml" />
    30         <property name="mapperLocations" value="classpath:cn/hp/scm/dao/*.xml"/>
    31     </bean>
    32     
    33     <!-- 配置SessionTemplate,已封装了繁琐的数据操作-->
    34     <bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
    35         <constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"/>        
    36     </bean>
    37     
    38     <!-- 配置事务管理器,管理数据源事务处理-->
    39     <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    40         <property name="dataSource" ref="dataSource" />
    41     </bean>
    42     
    43     <!-- 配置事务通知 -->
    44     <tx:advice id="advice" transaction-manager="transactionManager">
    45         <tx:attributes>
    46 <!-- 默认只处理运行时异常,可加rollback-for="Exception/Throwable"等处理所有异常或包括错误 -->
    47             <tx:method name="insert*" propagation="REQUIRED" rollback-for="Exception"/>
    48             <tx:method name="update*" propagation="REQUIRED" rollback-for="Exception"/>
    49             <tx:method name="delete*" propagation="REQUIRED" rollback-for="Exception"/>
    50             <tx:method name="*" propagation="SUPPORTS"/>
    51         </tx:attributes>
    52     </tx:advice>
    53     
    54     <!-- 配置切面织入的范围,后边要把事务边界定在service层 -->
    55     <aop:config>
    56         <aop:advisor advice-ref="advice" pointcut="execution(* cn.hp.scm.dao.impl.*.*(..))"/>
    57     </aop:config>
    58     
    59     <!-- <context:component-scan base-package="*"/> -->
    60     <!-- 扫描的相应的包 -->
    61     <context:component-scan base-package="cn.hp">
    62         <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    63     </context:component-scan>    
    64     
    65     <!-- 配置 转换器,对于在basePackage设置的包(包括子包)下的接口类,如果在Mapper.xml文件中定义过,
    66     将被转换成spring的BEAN,在调用 的地方通过@Autowired方式将可以注入接口实例
    67     限定性类名,全路径名,非限定性类名不是全类名的名称-,相当于他的类名-->
    68     <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    69         <property name="sqlSessionFactory" ref="sqlSessionFactory"/>
    70         <property name="basePackage" value="cn.hp.scm.dao"/>
    71     </bean>
    72         
    73 </beans>
    View Code
  • 相关阅读:
    每天学一点MATLAB函数——文件编程函数
    每天学一点MATLAB函数——软件操作函数(1)
    C# 杂记
    ActiveX控件注册与反注册
    First Java Graphic Program
    判断式
    两个仿函数示例
    STL文件的读取与显示
    SQLite数据库(一)
    机器学习--如何理解Accuracy, Precision, Recall, F1 score
  • 原文地址:https://www.cnblogs.com/he-123/p/5372708.html
Copyright © 2011-2022 走看看