mybatis学习笔记 spring与mybatis整合

转载自http://blog.csdn.net/naruto_Mr/article/details/48239357

1.创建web工程,导入spring依赖包与mybatis依赖包,还需要mybatis-spring.jar,这是spring连接mybatis的桥梁.下载地址:http://mvnrepository.com/artifact/org.mybatis/mybatis-spring

2.配置文件

1)web.xml配置,指定spring配置文件名为config/spring-cfg.xml

[html] view plain copy
 
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <web-app version="2.4"   
  3.     xmlns="http://java.sun.com/xml/ns/j2ee"   
  4.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
  5.     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   
  6.     http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">  
  7.     <!-- spring入口 -->  
  8.     <!-- 自动加载spring配置文件WEB-INF/applicationContenxt.xml -->  
  9.     <listener>  
  10.          <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
  11.     </listener>  
  12.     <!-- 修改spring配置文件路径 -->  
  13.     <context-param>  
  14.          <param-name>contextConfigLocation</param-name>  
  15.          <param-value>WEB-INF/classes/config/spring-cfg.xml</param-value>  
  16.     </context-param>  
  17. </web-app>  


2)spring-cfg.xml配置

[html] view plain copy
 
  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:context="http://www.springframework.org/schema/context"      
  7.     xsi:schemaLocation="http://www.springframework.org/schema/beans     
  8.     http://www.springframework.org/schema/beans/spring-beans-3.2.xsd     
  9.     http://www.springframework.org/schema/tx     
  10.     http://www.springframework.org/schema/tx/spring-tx-3.2.xsd    
  11.     http://www.springframework.org/schema/context    
  12.     http://www.springframework.org/schema/context/spring-context-3.2.xsd">  
  13.     <import resource="classpath:config/spring-mybatis.xml"/>  
  14.     <!-- 开启注解注入 -->  
  15.     <context:annotation-config></context:annotation-config>  
  16.     <context:component-scan base-package="com.skymr.mybatis.dao"></context:component-scan>  
  17.     <context:component-scan base-package="com.skymr.mybatis.service"></context:component-scan>  
  18. </beans>  

引用mybatis的spring配置文件,开启自动扫描功能,扫描dao层与service层.

3)spring-mybatis.xml配置

[html] view plain copy
 
  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.     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">  
  6.     <!-- 数据源 -->  
  7.     <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">  
  8.         <!-- 这个属性driverClassName为什么在DriverManagerDataSource及父类中找不到呢 -->  
  9.         <property name="driverClassName" value="com.mysql.jdbc.Driver" />  
  10.         <property name="url" value="jdbc:mysql://127.0.0.1:3306/website"/>  
  11.         <property name="username" value="root" />  
  12.         <property name="password" value="root" />  
  13.     </bean>  
  14.       
  15.     <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">  
  16.         <property name="basePackage" value="com.skymr.mybatis.dao"></property>  
  17.         <property name="sqlSessionFactoryBeanName" value="sessionFactory"></property>  
  18.     </bean>  
  19.       
  20.     <!-- sessionFactory配置 -->  
  21.     <bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">  
  22.         <property name="dataSource" ref="dataSource" />  
  23.         <property name="mapperLocations" value="classpath:com/skymr/mybatis/mappers/*.xml"/>  
  24.         <property name="configLocation" value="classpath:config/mybatis-config.xml"/>  
  25.     </bean>  
  26. </beans>  


首先是配置数据源;

再配置了个MapperScannerConfigurer,这个是什么用的呢?

在Service的实现层中,要使用到dao层的实现层的实例,但是mybatis中是没有dao层实现层的啊,怎么注入到Service中呢,我想MapperScannerConfiger就是解决这个问题的,它是将mybatis自己对dao层的实例化后的实例注入到spring容器中,我们就可以取出后使用.

最后配置了SqlsessionFactory,指定mapper文件路径与mybatis的另一些配置.

3)mybatis-config.xml配置

[html] view plain copy
 
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">  
  3. <configuration>  
  4.     <typeAliases>  
  5.         <!-- 别名配置,方便书写 -->  
  6.         <package name="com.skymr.mybatis.model"/>  
  7.     </typeAliases>  
  8. </configuration>  


只是定义别名而已.

3.分层

1).Model层

[html] view plain copy
 
  1. package com.skymr.mybatis.model;  
  2.   
  3. public class User {  
  4.   
  5.     private int id;  
  6.       
  7.     private String userName;  
  8.       
  9.     private String password;  
  10.   
  11.     public int getId() {  
  12.         return id;  
  13.     }  
  14.   
  15.     public void setId(int id) {  
  16.         this.id = id;  
  17.     }  
  18.   
  19.     public String getUserName() {  
  20.         return userName;  
  21.     }  
  22.   
  23.     public void setUserName(String userName) {  
  24.         this.userName = userName;  
  25.     }  
  26.   
  27.     public String getPassword() {  
  28.         return password;  
  29.     }  
  30.   
  31.     public void setPassword(String password) {  
  32.         this.password = password;  
  33.     }  
  34.       
  35.     public String toString(){  
  36.         return id+"," + userName+","+password;  
  37.     }  
  38. }  


2)Dao层

[html] view plain copy
 
  1. package com.skymr.mybatis.dao;  
  2.   
  3. import com.skymr.mybatis.model.User;  
  4.   
  5. public interface UserDao {  
  6.   
  7.     public User login(String userName, String password);  
  8. }  

3)mapper层,UserMapper.xml

[html] view plain copy
 
  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">  
  3. <mapper namespace="com.skymr.mybatis.dao.UserDao">  
  4.     <select id="login" resultType="User">  
  5.         select * from mybatis_user where userName=#{param1} and password=#{param2}  
  6.     </select>  
  7. </mapper>   


4).Service层

[html] view plain copy
 
  1. package com.skymr.mybatis.service;  
  2.   
  3. import com.skymr.mybatis.model.User;  
  4.   
  5. public interface UserService {  
  6.   
  7.       
  8.     public User login(String userName, String password);  
  9. }  
[html] view plain copy
 
  1. package com.skymr.mybatis.service.impl;  
  2.   
  3. import javax.annotation.Resource;  
  4.   
  5. import org.springframework.stereotype.Repository;  
  6.   
  7. import com.skymr.mybatis.dao.UserDao;  
  8. import com.skymr.mybatis.model.User;  
  9. import com.skymr.mybatis.service.UserService;  
  10. @Repository("userService")  
  11. public class UserServiceBean implements UserService{  
  12.     @Resource  
  13.     private UserDao userDao;  
  14.       
  15.     public User login(String userName, String password) {  
  16.         return userDao.login(userName, password);  
  17.     }  
  18.   
  19. }  

4.测试

[html] view plain copy
 
    1. package com.skymr.mybatis.service;  
    2.   
    3. import org.junit.Test;  
    4. import org.springframework.context.ApplicationContext;  
    5. import org.springframework.context.support.ClassPathXmlApplicationContext;  
    6.   
    7. import com.skymr.mybatis.model.User;  
    8.   
    9. public class LoginTest {  
    10.   
    11.     @Test  
    12.     public void loginTest(){  
    13.          ApplicationContext context= new ClassPathXmlApplicationContext("/config/spring-cfg.xml");  
    14.          UserService service =(UserService) context.getBean("userService");  
    15.          User user = service.login("aaaa", "aaaa");  
    16.          System.out.println(user);     
    17.     }  
    18. }  
原文地址:https://www.cnblogs.com/xywq/p/7325376.html