天天看点

mybait整合spring 之xml

在网上找了一大推资料也没有我想要的,干脆自己研究了一下,对于新手来说,整合这件事是十分烦人,好了废话不多说。

首先请准备需要的包,或者你用maven也可以,不过我相信大多数人还是用jar包导进去的。

mybait整合spring 之xml

下面是我的工程目录

mybait整合spring 之xml

由于我用的是mysql数据库,我们现在mysql下先执行下面一个sql语句

create database mybati;
use mybati;
CREATE TABLE users(id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(), age INT);
INSERT INTO users(NAME, age) VALUES('孤傲苍狼', );
INSERT INTO users(NAME, age) VALUES('白虎神皇', );
           

创建好后我们新建一个

conf.xml

文件,用于配置pojo类到数据库的映射路径,代码如下:

<?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>
    <!-- 这里设置别名,不让等一下到实体映射文件要写包名太麻烦了 -->
    <typeAliases>
        <typeAlias type="com.cmh.entity.User" alias="User"/>
    </typeAliases>
     <mappers>
        <mapper resource="com/cmh/Mapping/userMapper.xml"/>
    </mappers>
</configuration>
           

然后我们先来配置java文件,首先配置实体类

User

,代码如下:

package com.cmh.entity;

public class User {
    private int id;
    private String name;
    private int age;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }

}
           

接下来我们在包名为

com.cmh.dao

下创建接口类

UserDao

package com.cmh.dao;

public interface UserDao {
    int findUser(int id);
}
           

再在

com.cmh.dao.impl

下创建实现接口的类

UserDaoImpl

,代码如下(由于是实验性整合,建议不要写的太复杂,这里我们就实现一个功能就行了):

import com.cmh.entity.User;

public class UserDaoImpl implements UserDao {
    public SqlSessionTemplate sqlSession;


    public SqlSessionTemplate getSqlSession() {
        return sqlSession;
    }

    public void setSqlSession(SqlSessionTemplate sqlSession) {
        this.sqlSession = sqlSession;
    }

    @Override
    public int findUser(int id) {
        // TODO Auto-generated method stub
         String statement = "com.cmh.Mapping.userMapper.getUser";//映射sql的标识字符串
         User user = sqlSession.selectOne(statement, );
         System.out.println(user.getName());
         return ;
    }
}
           

接着在

com.cmh.service

创建接口类

UserService

,代码如下:

package com.cmh.service;

public interface UserService {
    int findById(int id);
}
           

com.cmh.service.impl

下新建一个实现

UserService

的类

UserManager

,代码如下:

package com.cmh.service.impl;

import com.cmh.dao.UserDao;
import com.cmh.service.UserService;

public class UserManager implements UserService {

    private UserDao userDao;



    public UserDao getUserDao() {
        return userDao;
    }

    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }

    @Override
    public int findById(int id) {
        // TODO Auto-generated method stub
        return userDao.findUser(id);
    }

}
           

接下来我们来看一看

com.cmh.Mapping

下的

userMapper.xml

文件配置,好了,亮代码:

接着就来看我们的关键性一步了,`spring_mybait.xml`的整合配置,代码如下,我会在注释里对一些有疑惑的进行讲解,好了,亮剑:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="
     http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <!--将外面的properties文件数据配置进来,方便下面的配置-->
        <context:property-placeholder location="classpath:config.properties" />  

        <!--创建jdbc数据源 ,相信如果整合过ssh对这个都不会太陌生,如果有任何不明白的可以去查查spring的文档,在文档中按ctrl+f,让后输入org.apache.commons.dbcp就能找到-->  
        <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"  
            destroy-method="close">  
            <property name="driverClassName" value="${driver}" />  
            <property name="url" value="${url}" />  
            <property name="username" value="${name}" />  
            <property name="password" value="${password}" />  
        </bean>  
    <!--我们知道在mybait中,执行操作都是通过sqlsession来产生操作的,sqlsession是基于sqlsessionFactory,sqlsessionFactory又是基于SqlSessionFactoryBuilder,但在我们的mybatis-spring-1.2.1.jar中,我们的却是基于SqlSessionFactoryBean来产生sqlsessionFactory,进而获取到sqlsession,所以我们要对其进行实例化注入-->
        <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">  
            <property name="dataSource" ref="dataSource" />  
            <property name="configLocation" value="conf.xml"/><!--获取配置文件-->
        </bean>  

        <!--以下是用于在接口类使用注解进行实例化是的配置,详情可以到[这里写链接内容](http://blog.csdn.net/lemonyfei/article/details/8925351)进行查看-->
   <!--     
   <bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">  
           <property name="mapperInterface" value="com.cmh.dao.UserDao"></property>  
           <property name="sqlSessionFactory" ref="sqlSessionFactory"></property>  
        </bean>
    -->
    <!--Mybatis-Spring为我们提供了一个实现了SqlSession接口的SqlSessionTemplate类,它是线程安全的,可以被多个Dao同时使用。同时它还跟Spring的事务进行了关联,确保当前被使用的SqlSession是一个已经和Spring的事务进行绑定了的。而且它还可以自己管理Session的提交和关闭。当使用了Spring的事务管理机制后,SqlSession还可以跟着Spring的事务一起提交和回滚,配置如下-->
        <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
            <constructor-arg index="0" ref="sqlSessionFactory" />
        </bean>

        <bean id="temple" class="com.cmh.dao.impl.UserDaoImpl">
            <property name="sqlSession"  ref="sqlSession"/>
        </bean>

        <!--接着将实例化的UserDaoImpl的bean注入即可完成-->
        <bean id="userService" class="com.cmh.service.impl.UserManager">  
            <property name="userDao" ref="temple"></property>  
        </bean>

</beans>
           

下面是

config.properties

的配置,由于我的mysql是第三方集成的没有密码,所以不用写:

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:/mybati
name=root
password=
           

下面是测试代码,用junit测试,如下:

@Test
    public void test2(){
            ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring_mybait.xml");  
            UserService userService = (UserService) applicationContext.getBean("userService");  
            int judge = userService.findById();  
            System.out.println(judge);  
    }
           
运行结果如下:
![这里写图片描述](https://img-blog.csdn.net/20150722131028285)