MyBatis学习(十一)-MyBatis与Spring整合(一)

之前,分享过MyBatis的基础使用方法,但是,在日常开发中,大多会和Spring整合,在这里,简单分享一下。

这是学习官方的教程总结,官方教程地址:http://mybatis.github.io/spring/getting-started.html


1. pom.xml

与Spring整合的话,首先需要的是依赖包,

[html]  view plain copy
  1. <?xml version="1.0"?>  
  2. <project  
  3.     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"  
  4.     xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">  
  5.     <modelVersion>4.0.0</modelVersion>  
  6.   
  7.     <parent>  
  8.         <artifactId>mybatis-parent</artifactId>  
  9.         <groupId>org.ygy.demo</groupId>  
  10.         <version>0.0.1-SNAPSHOT</version>  
  11.     </parent>  
  12.   
  13.     <artifactId>mybatis-spring</artifactId>  
  14.   
  15.     <name>mybatis-spring</name>  
  16.     <url>http://maven.apache.org</url>  
  17.   
  18.     <properties>  
  19.         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  
  20.         <spring.version>3.1.1.RELEASE</spring.version>  
  21.         <struts.version>2.3.15.1</struts.version>  
  22.         <mybatis.version>3.2.2</mybatis.version>  
  23.     </properties>  
  24.   
  25.     <profiles>  
  26.         <profile>  
  27.             <id>development</id>  
  28.             <properties>  
  29.                 <jdbc_url>jdbc:oracle:thin:@xxx</jdbc_url>  
  30.                 <jdbc_user>dptest</jdbc_user>  
  31.                 <jdbc_password>dptest</jdbc_password>  
  32.             </properties>  
  33.   
  34.             <build>  
  35.                 <resources>  
  36.                     <resource>  
  37.                         <directory>src/main/resources</directory>  
  38.                         <filtering>true</filtering>  
  39.                     </resource>  
  40.                 </resources>  
  41.             </build>  
  42.   
  43.             <activation>  
  44.                 <activeByDefault>true</activeByDefault>  
  45.             </activation>  
  46.         </profile>  
  47.     </profiles>  
  48.   
  49.     <dependencies>  
  50.         <dependency>  
  51.             <groupId>org.mybatis</groupId>  
  52.             <artifactId>mybatis-spring</artifactId>  
  53.             <version>1.2.0</version>  
  54.         </dependency>  
  55.   
  56.         <dependency>  
  57.             <groupId>com.alibaba</groupId>  
  58.             <artifactId>druid</artifactId>  
  59.             <version>0.2.9</version>  
  60.         </dependency>  
  61.   
  62.         <dependency>  
  63.             <groupId>org.springframework</groupId>  
  64.             <artifactId>spring-jdbc</artifactId>  
  65.             <version>${spring.version}</version>  
  66.         </dependency>  
  67.     </dependencies>  
  68.   
  69. </project>  

2. 实体

在持久层操作,就离不开实体啦

[java]  view plain copy
  1. package org.ygy.mybatis.spring.entity;  
  2.   
  3. import lombok.Data;  
  4.   
  5. @Data  
  6. public class UserEntity implements java.io.Serializable{  
  7.     private static final long serialVersionUID = 8663915064096283715L;  
  8.       
  9.     private Integer id;   
  10.     private String name;  
  11.     private Integer age;  
  12.       
  13. }  

3. 持久层接口

以前的话,我个人大多是使用配置文件,就是Mapper文件,将SQL都写在里面,在这里的话,官方使用了注解,在这里顺道也学习一下。

[java]  view plain copy
  1. package org.ygy.mybatis.spring.mapper;  
  2.   
  3. import java.util.List;  
  4.   
  5. import org.apache.ibatis.annotations.Delete;  
  6. import org.apache.ibatis.annotations.Insert;  
  7. import org.apache.ibatis.annotations.Param;  
  8. import org.apache.ibatis.annotations.Select;  
  9. import org.apache.ibatis.annotations.Update;  
  10. import org.ygy.mybatis.spring.entity.UserEntity;  
  11.   
  12. public interface UserMapper {  
  13.       
  14.     @Select("SELECT * FROM t_ygy_demo_person WHERE id = #{id}")  
  15.     public UserEntity queryById(@Param("id") Integer id);  
  16.       
  17.     @Insert("INSERT INTO t_ygy_demo_person(id , name , age) values(#{id} , #{name} , #{age})")  
  18.     public void insert(UserEntity user);  
  19.       
  20.     @Update("UPDATE t_ygy_demo_person set name=#{name} , age=#{age} where id=#{id}")  
  21.     public void update(UserEntity user);  
  22.       
  23.     @Delete("DELETE FROM t_ygy_demo_person where id=#{id} ")  
  24.     public void delete(@Param("id") Integer id);  
  25.       
  26.     @Select("SELECT *FROM t_ygy_demo_person")  
  27.     public List<UserEntity> queryAll();  
  28. }  

4. 配置文件

[html]  view plain copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2.   
  3. <beans xmlns="http://www.springframework.org/schema/beans"  
  4.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"  
  5.     xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jdbc="http://www.springframework.org/schema/jdbc"  
  6.     xmlns:context="http://www.springframework.org/schema/context"  
  7.     xsi:schemaLocation="  
  8.      http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd  
  9.      http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
  10.      http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd  
  11.      http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd  
  12.      http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">  
  13.   
  14.   
  15.     <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"  
  16.         init-method="init" destroy-method="close">  
  17.         <!-- 基本属性 url、user、password -->  
  18.         <property name="url" value="jdbc:oracle:thin:@192.168.17.254:1521:dpweb" />  
  19.         <property name="username" value="dptest" />  
  20.         <property name="password" value="dptest" />  
  21.   
  22.         <!-- 配置初始化大小、最小、最大 -->  
  23.         <property name="initialSize" value="1" />  
  24.         <property name="minIdle" value="1" />  
  25.         <property name="maxActive" value="20" />  
  26.   
  27.         <!-- 配置获取连接等待超时的时间 -->  
  28.         <property name="maxWait" value="60000" />  
  29.   
  30.         <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->  
  31.         <property name="timeBetweenEvictionRunsMillis" value="60000" />  
  32.   
  33.         <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->  
  34.         <property name="minEvictableIdleTimeMillis" value="300000" />  
  35.   
  36.         <property name="validationQuery" value="SELECT 'x'" />  
  37.         <property name="testWhileIdle" value="true" />  
  38.         <property name="testOnBorrow" value="false" />  
  39.         <property name="testOnReturn" value="false" />  
  40.   
  41.         <!-- 打开PSCache,并且指定每个连接上PSCache的大小 -->  
  42.         <property name="poolPreparedStatements" value="true" />  
  43.         <property name="maxPoolPreparedStatementPerConnectionSize"  
  44.             value="20" />  
  45.   
  46.         <!-- 配置监控统计拦截的filters -->  
  47.         <property name="filters" value="stat" />  
  48.     </bean>  
  49.   
  50.     <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">  
  51.         <property name="dataSource" ref="dataSource" />  
  52.     </bean>  
  53.   
  54.     <!-- 1.使用注解 -->  
  55.     <bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">  
  56.         <property name="mapperInterface" value="org.ygy.mybatis.spring.mapper.UserMapper" />  
  57.         <property name="sqlSessionFactory" ref="sqlSessionFactory" />  
  58.     </bean>  
  59.   
  60. </beans>  

整合的话,重点在配置文件中。

5. 测试

[java]  view plain copy
  1. package org.ygy.mybatis.test;  
  2.   
  3. import java.util.List;  
  4.   
  5. import org.junit.Before;  
  6. import org.junit.Test;  
  7. import org.springframework.context.ApplicationContext;  
  8. import org.springframework.context.support.ClassPathXmlApplicationContext;  
  9. import org.ygy.mybatis.spring.entity.UserEntity;  
  10. import org.ygy.mybatis.spring.mapper.UserMapper;  
  11.   
  12. public class Client {  
  13.     private UserMapper userMapper = null;  
  14.       
  15.     @Before  
  16.     public void before() {  
  17.         ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");  
  18.         userMapper = applicationContext.getBean("userMapper" , UserMapper.class);  
  19.     }  
  20.       
  21.     @Test  
  22.     public void testInsert() {  
  23.         UserEntity user = new UserEntity();  
  24.         user.setId(9001);  
  25.         user.setName("一户");  
  26.         user.setAge(22);  
  27.           
  28.         userMapper.insert(user);  
  29.     }   
  30.       
  31.     @Test  
  32.     public void testDelete() {  
  33.         userMapper.delete(9001);  
  34.     }  
  35.       
  36.     @Test  
  37.     public void testUpdate() {  
  38.         UserEntity user = new UserEntity();  
  39.         user.setId(9002);  
  40.         user.setName("孙悟空");  
  41.         user.setAge(222);  
  42.           
  43.         userMapper.insert(user);  
  44.           
  45.         UserEntity target = userMapper.queryById(9002);  
  46.         System.out.println(target);  
  47.           
  48.         target.setName("猪八戒");  
  49.         userMapper.update(target);  
  50.           
  51.         UserEntity result = userMapper.queryById(9002);  
  52.         System.out.println(result);  
  53.     }  
  54.       
  55.     @Test  
  56.     public void testQueryAll() {  
  57.         List<UserEntity> userList = userMapper.queryAll();  
  58.         System.out.println(userList);  
  59.     }  
  60.       
  61.     @Test  
  62.     public void testQueryById() {  
  63.         UserEntity user = userMapper.queryById(9002);  
  64.         System.out.println(user);  
  65.     }  
  66. }  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值