Mybatis初学者的简单运用

刚出学校的大门,第一个公司接触的dao层框架就是Hibernate,那个时候对Mybatis 的了解也仅存在于同学之间有用过,所以百度稍微了解过。现在第二家公司用到了Mybatis ,所以在这里跟大家分享下,在没有接触过Mybatis 的时候,如何快速上手Mybatis 以及进行简单的应用与操作。

1>.简单的比较下Hibernate和Mybatis 

    1.首先两者都是对象关系映射框架。MyBatis的对象关系映射配置灵活,Hibernate则需要配置完整的对象关系映射,对象关系维护的更好。业务表的关联太多,建议使用MyBatis。

    2.Hibernate开发中,sql语句已经被封装,直接可以使用,加快系统开发;而Mybatis 属于半自动化,sql需要自己完成,稍微繁琐;所以如果对于比较复杂的语句,Mybatis 的优势就要突出些。看上去Hibernate更能带给初学者便利,但是实际如果想要真正掌握Hibernate要比Mybatis 难不少,Mybatis 更加简单容易上手。

    3.说了这么多,感觉Mybatis要比Hibernate好些,其实不然,只能说Hibernate的真正掌握要比Mybatis困难,Hibernate比mybatis更加重量级一些。所以初学者更适合用Mybatis些。

    4.具体两者之间的优缺点大家可以去看一下:

        https://blog.csdn.net/qq_35327049/article/details/77182086

2.>Mybatis的学习

    1.开始:

    所有的MyBatis 应用都以SqlSessionFactory 实例为中心。SqlSessionFactory 实例通过 SqlSessionFactoryBuilder 来获得,SqlSessionFactoryBuilder 能够从XML 配置文件或者通过自定义编写的配置类(Configuration class),来创建一个SqlSessionFactory 实例。

    XML 配置文件包含MyBatis 框架的核心设置,包括获取数据库连接的DataSource 实例,和包括决定事务作用域范围和控制的事务管理等。您将能够在后面的章节中找到详细的XML 配置,在这里先展示一个简单的例子:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="org/mybatis/example/BlogMapper.xml"/>
</mappers>
</configuration>

虽然XML 配置文件中还有很多其它的配置细节,但是,上面的示例显示了最重要的部分。注意XML 配置文件的头部,会使用DTD 验证文档来验证该XML 配置文件。body 部分的environment元素,包含了事务管理和连接池配置。Mappers 元素指定了映射配置文件--包含SQL 语句和映射定义的XML 文件。

    2.Mapper XML 配置:

    MyBatis 的XML 配置文件包含了设置和影响MyBatis 行为的属性。XML 配置文件的层次结构如下:
configuration
   properties
   settings
   typeAliases
   typeHandlers
   objectFactory
   plugins
   environments
       environment
       transactionManager
       dataSource

   mappersd

相关的具体属性的用法和介绍大家可以去Mybatis的官网学习了解。

    3.SQL 映射XML 文件:

    MyBatis 真正强大之处就在这些映射语句,对于它的强大功能,SQL 映射文件的配置却非常简单。如果你比较SQL 映射文件配置与JDBC 代码,就会很快可以发现,使用SQL 映射文件配置可以节省一大部分的代码量。SQL 映射XML 文件只有一些基本的元素需要配置,如下:

cache –在特定的命名空间配置缓存。
cache-ref – 引用另外一个命名空间配置的缓存.
resultMap – 最复杂也是最强大的元素,用来描述如何从数据库结果集里加载对象。
sql – 能够被其它语句重用的SQL 块。
insert –INSERT 映射语句
update –UPDATE 映射语句
delete –DELEETE 映射语句

select –SELECT 映射语句

具体用法大家可以参考Mybatis的官网。

3.>相信大家对Mybatis基本有了些了解,所以现在主要讲一下SpringMVC + Mybatis在项目怎么配置和简单的使用。

    1.整合项目所需要的SpringMVC和Mybatis jar包(自行下载相应的jar包,本人建立的是meavn项目所以贴出相应的pom.xml)。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd ">
  <modelVersion>4.0.0</modelVersion>
  <groupId>Doc_m</groupId>
  <artifactId>Doc_m</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
  <name/>
  <description/>
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <spring.version>4.3.6.RELEASE</spring.version>
  </properties>
  <build>
    <sourceDirectory>${basedir}/src</sourceDirectory>
    <outputDirectory>${basedir}/WebRoot/WEB-INF/classes</outputDirectory>
    <resources>
      <resource>
        <directory>${basedir}/src</directory>
        <excludes>
          <exclude>**/*.java</exclude>
        </excludes>
      </resource>
    </resources>
    <plugins>
      <plugin>
        <artifactId>maven-war-plugin</artifactId>
        <configuration>
          <webappDirectory>${basedir}/WebRoot</webappDirectory>
          <warSourceDirectory>${basedir}/WebRoot</warSourceDirectory>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.6</source>
          <target>1.6</target>
        </configuration>
      </plugin>
    </plugins>
  </build>
  <dependencies>
  	<dependency>
	    <groupId>org.apache.maven.plugins</groupId>
	    <artifactId>maven-resources-plugin</artifactId>
	    <version>2.4.3</version>
	</dependency>
  	<!-- Spring -->
  	<dependency>
	  <groupId>org.springframework</groupId>
	  <artifactId>spring-aop</artifactId>
	  <version>${spring.version}</version>
	</dependency>
  	<dependency>
	  <groupId>org.springframework</groupId>
	  <artifactId>spring-aspects</artifactId>
	  <version>${spring.version}</version>
	</dependency>
  	<dependency>
	  <groupId>org.springframework</groupId>
	  <artifactId>spring-beans</artifactId>
	  <version>${spring.version}</version>
	</dependency>
  	<dependency>
	  <groupId>org.springframework</groupId>
	  <artifactId>spring-context</artifactId>
	  <version>${spring.version}</version>
	</dependency>
  	<dependency>
	  <groupId>org.springframework</groupId>
	  <artifactId>spring-context-support</artifactId>
	  <version>${spring.version}</version>
	</dependency>
  	<dependency>
	  <groupId>org.springframework</groupId>
	  <artifactId>spring-core</artifactId>
	  <version>${spring.version}</version>
	</dependency>
	<dependency>
 	  <groupId>org.springframework</groupId>
	  <artifactId>spring-expression</artifactId>
	  <version>${spring.version}</version>
	</dependency>
	<dependency>
 	  <groupId>org.springframework</groupId>
	  <artifactId>spring-jdbc</artifactId>
	  <version>${spring.version}</version>
	</dependency>
	<dependency>
	  <groupId>org.springframework.mobile</groupId>
	  <artifactId>spring-mobile-device</artifactId>
	  <version>1.1.4.RELEASE</version>
	</dependency>
	<dependency>
 	  <groupId>org.springframework</groupId>
	  <artifactId>spring-orm</artifactId>
	  <version>${spring.version}</version>
	</dependency>
	<dependency>
 	  <groupId>org.springframework</groupId>
	  <artifactId>spring-test</artifactId>
	  <version>${spring.version}</version>
	</dependency>
	<dependency>
 	  <groupId>org.springframework</groupId>
	  <artifactId>spring-tx</artifactId>
	  <version>${spring.version}</version>
	</dependency>
	<dependency>
 	  <groupId>org.springframework</groupId>
	  <artifactId>spring-web</artifactId>
	  <version>${spring.version}</version>
	</dependency>
	<dependency>
 	  <groupId>org.springframework</groupId>
	  <artifactId>spring-webmvc</artifactId>
	  <version>${spring.version}</version>
	</dependency>

	<!-- jackson -->
	<dependency>
	  <groupId>com.fasterxml.jackson.core</groupId>
	  <artifactId>jackson-core</artifactId>
	  <version>2.8.3</version>
	</dependency>
	<dependency>
	  <groupId>com.fasterxml.jackson.core</groupId>
	  <artifactId>jackson-annotations</artifactId>
	  <version>2.8.3</version>
	</dependency>
	<dependency>
	  <groupId>com.fasterxml.jackson.core</groupId>
	  <artifactId>jackson-databind</artifactId>
	  <version>2.8.3</version>
	</dependency>
	<dependency>
	  <groupId>com.fasterxml.jackson.dataformat</groupId>
	  <artifactId>jackson-dataformat-xml</artifactId>
	  <version>2.8.7</version>
	</dependency>
	<dependency>
	  <groupId>com.fasterxml.jackson.module</groupId>
	  <artifactId>jackson-module-jaxb-annotations</artifactId>
	  <version>2.8.7</version>
	</dependency>
	
	
	<!-- ehcache -->
	<dependency>
	  <groupId>net.sf.ehcache</groupId>
	  <artifactId>ehcache</artifactId>
	  <version>2.10.3</version>
	</dependency>
	<dependency>
	  <groupId>net.sf.ehcache</groupId>
	  <artifactId>ehcache-web</artifactId>
	  <version>2.0.4</version>
	</dependency>
	<!-- 解析html文本 -->
	<dependency>
	  <groupId>org.jsoup</groupId>
	  <artifactId>jsoup</artifactId>
	  <version>1.9.2</version>
	</dependency>
	<dependency>
	  <groupId>junit</groupId>
	  <artifactId>junit</artifactId>
	  <version>4.9</version>
	</dependency>
	<!-- 验证码 -->
	<dependency>
	  <groupId>com.github.penggle</groupId>
	  <artifactId>kaptcha</artifactId>
	  <version>2.3.2</version>
	</dependency>
	<dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
      <scope>compile</scope>
    </dependency>

	<!-- c3p0连接池 -->
	<dependency>
	  <groupId>com.mchange</groupId>
	  <artifactId>mchange-commons-java</artifactId>
	  <version>0.2.11</version>
	</dependency>
  	<dependency>
	  <groupId>com.mchange</groupId>
	  <artifactId>c3p0</artifactId>
	  <version>0.9.5.2</version>
	</dependency>
  	
	<!-- commons -->	
	<dependency>
	  <groupId>log4j</groupId>
	  <artifactId>log4j</artifactId>
	  <version>1.2.17</version>
	</dependency>
	<dependency>
	  <groupId>commons-lang</groupId>
	  <artifactId>commons-lang</artifactId>
	  <version>2.6</version>
	</dependency>
	<dependency>
	  <groupId>org.apache.commons</groupId>
	  <artifactId>commons-lang3</artifactId>
	  <version>3.5</version>
	</dependency>
	<dependency>
	  <groupId>commons-io</groupId>
	  <artifactId>commons-io</artifactId>
	  <version>2.5</version>
	</dependency>
	<dependency>
	  <groupId>commons-collections</groupId>
	  <artifactId>commons-collections</artifactId>
	  <version>3.2.2</version>
	</dependency>
	<dependency>
	  <groupId>commons-fileupload</groupId>
	  <artifactId>commons-fileupload</artifactId>
	  <version>1.3.2</version>
	</dependency>
	<dependency>
	  <groupId>com.fasterxml</groupId>
	  <artifactId>classmate</artifactId>
	  <version>0.5.4</version>
	</dependency>
	<dependency>
	  <groupId>commons-logging</groupId>
	  <artifactId>commons-logging</artifactId>
	  <version>1.1.1</version>
	</dependency>
	<dependency>
	  <groupId>org.jboss.logging</groupId>
	  <artifactId>jboss-logging</artifactId>
	  <version>3.3.0.Final</version>
	</dependency>
	<dependency>
	  <groupId>org.apache.tomcat</groupId>
	  <artifactId>servlet-api</artifactId>
	  <version>6.0.48</version>
	</dependency>
	<dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>jstl</artifactId>
      <version>1.2</version>
    </dependency>
	<!-- 用来处理常用的编码方法的工具类包,例如DES、SHA1、MD5、Base64等等 -->
	<dependency>
	  <groupId>commons-codec</groupId>
	  <artifactId>commons-codec</artifactId>
	  <version>1.9</version>
	</dependency>
	<!-- 解析XML  -->
	<dependency>
	  <groupId>dom4j</groupId>
	  <artifactId>dom4j</artifactId>
	  <version>1.6.1</version>
	</dependency>
	<dependency>
		<groupId>jaxen</groupId>
		<artifactId>jaxen</artifactId>
		<version>1.1.6</version>
	</dependency>
	<!-- freeMarker视图解析器 -->
   	<dependency>
	  <groupId>org.freemarker</groupId>
	  <artifactId>freemarker</artifactId>
	  <version>2.3.26-incubating</version>
	</dependency>
	
	
	<!-- mybatis -->
	<dependency>
	  <groupId>org.mybatis</groupId>
	  <artifactId>mybatis-spring</artifactId>
	  <version>1.3.1</version>
	</dependency>
	<dependency>
	  <groupId>org.mybatis</groupId>
	  <artifactId>mybatis</artifactId>
	  <version>3.4.2</version>
	</dependency>
	<dependency>
		<groupId>javax.inject</groupId>
		<artifactId>javax.inject</artifactId>
		<version>1</version>
	</dependency>
	<dependency>
	  <groupId>org.mybatis.generator</groupId>
	  <artifactId>mybatis-generator-core</artifactId>
	  <version>1.3.2</version>
	</dependency>
	<dependency>  
	    <groupId>com.github.pagehelper</groupId>  
	    <artifactId>pagehelper</artifactId>  
	    <version>4.1.6</version>  
	</dependency>  
	<dependency>
	  <groupId>tk.mybatis</groupId>
	  <artifactId>mapper</artifactId>
	  <version>3.4.0</version>
	</dependency>
	<dependency>  
	  <groupId>javax.persistence</groupId>  
	  <artifactId>persistence-api</artifactId>  
	  <version>1.0</version>  
	</dependency> 
	
	<!-- sqlserver驱动 -->
	<dependency>
	  <groupId>com.microsoft.sqlserver</groupId>
	  <artifactId>sqljdbc4</artifactId>
	  <version>4.0.0</version>
	</dependency>
	<!-- mysql驱动 -->
	<dependency>
	  <groupId>mysql</groupId>
	  <artifactId>mysql-connector-java</artifactId>
	  <version>5.1.38</version>
	</dependency>
	
	
	<!-- https://mvnrepository.com/artifact/javax.servlet.jsp/jsp-api -->
        <dependency>
		<groupId>javax.servlet.jsp</groupId>
		<artifactId>jsp-api</artifactId>
		<version>2.1</version>
		<scope>provided</scope>
	</dependency>
  </dependencies>
</project>

2.web.xml:

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

  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
			classpath*:/applicationContext.xml,classpath*:/applicationContext-shiro.xml
	</param-value>
  </context-param>
  
  <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*:/applicationContext-mvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>Springmvc</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
  
  <filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>
    <init-param>
      <param-name>forceEncoding</param-name>
      <param-value>true</param-value>
    </init-param>
  </filter>
 
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener> 
   
  <listener>
    <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
  </listener>  
  
  
</web-app>

3.mybatis-config.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration   
    PUBLIC "-//mybatis.org//DTD Config 3.0//EN"  
    "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
     <settings>
        <!-- 打印查询语句 -->
        <setting name="logImpl" value="LOG4J" />
        <!-- 打开延迟加载的开关 -->  
        <setting name="lazyLoadingEnabled" value="true" />  
        <!-- 将积极加载改为消息加载即按需加载 -->  
        <setting name="aggressiveLazyLoading" value="false"/> 
    </settings>
    <!--   
	    plugins在配置文件中的位置必须符合要求,否则会报错,顺序如下:  
	    properties?, settings?,   
	    typeAliases?, typeHandlers?,   
	    objectFactory?,objectWrapperFactory?,   
	    plugins?,   
	    environments?, databaseIdProvider?, mappers?  
	-->  
	<typeHandlers>
		<typeHandler handler="com.oig.mybatis.typeHandlers.MapTypeHandler"/>
	</typeHandlers>
	<plugins>  
	    <!-- com.github.pagehelper为PageHelper类所在包名 -->  
	    <plugin interceptor="com.github.pagehelper.PageHelper">  
	        <!-- 该参数默认为false -->  
	        <!-- 设置为true时,会将RowBounds第一个参数offset当成pageNum页码使用 -->  
	        <!-- 和startPage中的pageNum效果一样-->  
	        <property name="offsetAsPageNum" value="true"/>  
	        <!-- 该参数默认为false -->  
	        <!-- 设置为true时,使用RowBounds分页会进行count查询 -->  
	        <property name="rowBoundsWithCount" value="true"/>  
	        <!-- 设置为true时,如果pageSize=0或者RowBounds.limit = 0就会查询出全部的结果 -->  
	        <!-- (相当于没有执行分页查询,但是返回结果仍然是Page类型)-->  
	        <property name="pageSizeZero" value="true"/>  
	        <!-- 3.3.0版本可用 - 分页参数合理化,默认false禁用 -->  
	        <!-- 启用合理化时,如果pageNum<1会查询第一页,如果pageNum>pages会查询最后一页 -->  
	        <!-- 禁用合理化时,如果pageNum<1或pageNum>pages会返回空数据 -->  
	        <property name="reasonable" value="false"/>  
	        <!-- 3.5.0版本可用 - 为了支持startPage(Object params)方法 -->  
	        <!-- 增加了一个`params`参数来配置参数映射,用于从Map或ServletRequest中取值 -->  
	        <!-- 可以配置pageNum,pageSize,count,pageSizeZero,reasonable,orderBy,不配置映射的用默认值 -->  
	        <!-- 不理解该含义的前提下,不要随便复制该配置 -->  
	        <property name="params" value="pageNum=pageHelperStart;pageSize=pageHelperRows;"/>  
	        <!-- 支持通过Mapper接口参数来传递分页参数 -->  
	        <property name="supportMethodsArguments" value="false"/>  
	        <!-- always总是返回PageInfo类型,check检查返回类型是否为PageInfo,none返回Page -->  
	        <property name="returnPageInfo" value="none"/>  
	    </plugin>  
	</plugins>  
</configuration>

4.applicationContext.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:context="http://www.springframework.org/schema/context" 
	xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:cache="http://www.springframework.org/schema/cache"
	xmlns:task="http://www.springframework.org/schema/task"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
	http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
	http://www.springframework.org/schema/context 
	http://www.springframework.org/schema/context/spring-context-4.3.xsd
	http://www.springframework.org/schema/tx 
	http://www.springframework.org/schema/tx/spring-tx-4.3.xsd
	http://www.springframework.org/schema/aop 
	http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
	http://www.springframework.org/schema/task
	http://www.springframework.org/schema/task/spring-task-4.3.xsd
	http://www.springframework.org/schema/cache
    http://www.springframework.org/schema/cache/spring-cache-4.3.xsd ">
	
	<context:property-placeholder location="classpath*:/param.properties" ignore-resource-not-found="true" ignore-unresolvable="true" />
	
<!--     <context:component-scan base-package="com.oig"/> -->
 	<context:component-scan base-package="com.oig">
		<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" />
		<context:exclude-filter type="annotation" expression="org.springframework.web.bind.annotation.ControllerAdvice" />
	</context:component-scan>
	
	<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
		<property name="driverClass" value="${jdbc.driver}"/>
		<property name="jdbcUrl" value="${jdbc.url}"/>
		<property name="user" value="${jdbc.username}"/>
		<property name="password" value="${jdbc.password}" />
		<property name="initialPoolSize" value="5" />
		<property name="minPoolSize" value="5" />
		<property name="maxPoolSize" value="100" />
		<property name="maxIdleTime" value="600" />
		<property name="acquireIncrement" value="5" />
		<property name="checkoutTimeout" value="60000" />
	</bean>
	
	
	<!-- 2.配置sqlSessionFactory 
    	typeAliasesPackage 实体类包名
    	dataSource 数据源
    -->	
     <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    	<property name="dataSource" ref="dataSource"></property>
    	<property name="typeAliasesPackage" value="com.oig.bean"></property>
    	<property name="configLocation" value="classpath:mybatis-config.xml"></property>
    	<property name="mapperLocations" value="classpath*:com/oig/dao/**/*.xml"></property>
    </bean>
    

    <!-- 3.配置 自动扫描mapper 
    	basePackage mapper所在的包名
    -->
    <bean class="tk.mybatis.spring.mapper.MapperScannerConfigurer">
    	<property name="basePackage" value="com.oig.dao"></property>
    	<property name="properties">
    		<value>
    			style=normal
    			mappers=com.oig.mybatis.mapper.BaseMapper
    		</value>
    	</property>
    </bean>
    
    <!-- 4.开启事务 -->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    	<property name="dataSource" ref="dataSource"></property>
    </bean>

    <!-- 5.配置事务 -->
	<tx:annotation-driven transaction-manager="transactionManager"/> 
	
	<!-- log4j错误日志输出 -->
	<bean id="logError" class="com.oig.utils.LoggerTest"></bean>
	<aop:config>
		<aop:aspect ref="logError">
			<aop:pointcut expression="execution(* com.oig.dao..*(..))" id="dao"/>
			<aop:pointcut expression="execution(* com.oig.service..*(..))" id="service"/>
			<aop:pointcut expression="execution(* com.oig.controller..*(..))" id="controller"/>
			<aop:pointcut expression="execution(* com.oig.utils..*(..))" id="utils"/>
		</aop:aspect>
	</aop:config>
	
	
	<!-- 启用缓存注解开关 -->
<!--  <cache:annotation-driven cache-manager="cacheManager"/> -->
	 <bean id="ehcache" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
   		<property name="configLocation" value="classpath:ehcache.xml"/>
 	 </bean>

 	 <bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager">
  	  	<property name="cacheManager" ref="ehcache"/>
	 </bean>
 	<cache:annotation-driven/>
 	<task:executor id="executor" pool-size="5" />  
	<task:scheduler id="scheduler" pool-size="10" />  
	<task:annotation-driven executor="executor" scheduler="scheduler"/>
</beans>

 4.相应的数据库连接数据,自己可以在配置文件中配置,并已经加上相应的log4j的配置文件,然后SpringMvc+Mybatis的项目基本搭建完毕,下面具体讲下Mybatis的运用。

 5.Controller的文件:

    package com.demo.controller;  
      
    import javax.annotation.Resource;  
      
    import org.springframework.beans.factory.annotation.Autowired;  
    import org.springframework.stereotype.Controller;  
    import org.springframework.web.bind.annotation.RequestMapping;  
    import org.springframework.web.servlet.ModelAndView;  
      
    import com.demo.dao.entity.Test;  
    import com.demo.service.ITestService;  
      
    @Controller  
    @RequestMapping("/test")  
    public class TestController {  
          
        @Autowired  
        TestService testService;  
      
	@ResponseBody
        @RequestMapping("/webTest")  
        public ModelAndView webTest(String id){  
              
            Test test = testService.getTestById(id);  
            ModelAndView modelAndView = new ModelAndView();  
            modelAndView.addObject("test",test);    
            return modelAndView;  
        }  
    }  

6.TestDao.java

package com.oig.dao;

import com.oig.bean.Test;

public interface TestDao {
	Test getTestById(String id);
}

7.TestDao.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="com.oig.dao.TestDao" >

	<select id="getTestById" parameterType="String" resultType="Test">
			select * from test where id = #{id}
	</select>
	
</mapper>

8.TestServiceImpl.java

package com.oig.serviceImpl;

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

import com.oig.bean.Test;
import com.oig.dao.TestDao;
import com.oig.service.TestService;

@Service
public class TestServiceImpl implements TestService {

	@Autowired
	private TestDao testDao;
	
	@Override
	public Test getTestById(String id) {
		return testDao.getTestById(id);
	}

}

9.这样我们就可以通过id查询数据库相应的test表中的数据了。

简单介绍就到这里,持续更新,到时再给大家贴出,使用Mybatis中遇到的一些问题,以及如何解决的。






    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值