MyBatis,Spring整合教程

在实际的项目开发中,我们需要将MyBatis和Spring进行整合,通过Spring 的依赖注入以减少代码的耦合。本文以MyEclipse和MySQL数据库为开发环境简单的讲解一下MyBatis和Spring的整合过程。

首先我们创建一个Java Project,名称任意,然后导入所需要包:spring3.1.1, mybatis-3.1.1.jar, mysql-connector-java-5.1.2-beta-bin.jar ,mybatis-spring-1.1.1.jar

第一步:创建数据库表
在Navicat下执行如下sql命令创建表User.

Sql代码  收藏代码
CREATE TABLE user 

  id int(11) NOT NULL AUTO_INCREMENT, 
  username varchar(20) NOT NULL, 
  password varchar(20) NOT NULL, 
  PRIMARY KEY (id) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

然后插入测试数据
Sql代码  收藏代码
INSERT INTO user VALUES ('1', 'admin', 'admin'); 


第二步:创建model
创建一个model包并在其下创建一个User.java文件。
Java代码  收藏代码
package model; 
 
public class User { 
    private int id; 
    private String username; 
    private String password; 
    public User(){ 
         
    } 
    public int getId() { 
        return id; 
    } 
    public void setId(int id) { 
        this.id = id; 
    } 
    public String getUsername() { 
        return username; 
    } 
    public void setUsername(String username) { 
        this.username = username; 
    } 
    public String getPassword() { 
        return password; 
    } 
    public void setPassword(String password) { 
        this.password = password; 
    } 
    public String toString(){ 
         return "User [id = "+ id +" , username = "+ username +"]" + " , password = "+ password; 
    } 



第三步:创建DAO接口(这里我们对增删改查进行简单的实现)
创建一个包dao,并在其下创建一个UserMapper.java文件作为DAO接口。
Java代码  收藏代码
package dao; 
 
import model.User; 
 
public interface UserMapper { 
    public User selectUser(User user); 
    public void insertUser(User user); 
    public void updateUser(User user); 
    public void deleteUser(int userId); 



第四步:实现DAO接口
在dao包下创建一个UserMapper.xml文件作为上一步创建的DAO接口的实现。
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="dao.UserMapper"> 
<select id="selectUser" parameterType="model.User" resultType="model.User"> 
    SELECT * FROM user WHERE username=#{username} AND password=#{password} 
</select> 
<insert id="insertUser" parameterType="model.User" flushCache="true"> 
   INSERT INTO user (id,username,password) VALUES (#{id},#{username},#{password}) 
</insert> 
<update id="updateUser" parameterType="model.User"> 
    UPDATE user SET password=#{password} WHERE id=#{id} 
</update> 
<delete id="deleteUser" parameterType="int"> 
    DELETE FROM user WHERE id=#{userId} 
</delete> 
</mapper> 

这里对这个xml文件作几点说明:
1. namespace要指定为接口的类路径。
2. select,insert,update,delete的id必须要和UserMapper.java接口中的方法同名。

第五步:创建MyBatis的配置文件
在src下创建一个mybatis-config.xml文件,由于我们的数据源部分是要交给Spring管理,所以此处的配置文件只包含xml映射文件的位置信息。
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> 
    <mappers> 
        <mapper resource="dao/UserMapper.xml"/> 
    </mappers> 
</configuration> 


第六步:在Spring中配置数据源
在src下创建一个ApplicationContext.xml文件作为Spring的配置文件,这里我们使用Spring自带的Jdbc数据源,读者可以根据实际需要替换为其他数据源。
Xml代码  收藏代码
<?xml version="1.0" encoding="UTF-8"?> 
<beans 
    xmlns="http://www.springframework.org/schema/beans" 
    xmlns:tx="http://www.springframework.org/schema/tx" 
    xmlns:p="http://www.springframework.org/schema/p" 
    xmlns:aop="http://www.springframework.org/schema/aop"  
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans  
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
    http://www.springframework.org/schema/tx  
    http://www.springframework.org/schema/tx/spring-tx-3.0.xsd  
    http://www.springframework.org/schema/aop   
    http://www.springframework.org/schema/aop/spring-aop-3.0.xsd"> 
<!—配置数据源--> 
    <bean id="jdbcDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
    <property name="driverClassName"> 
        <value>org.gjt.mm.mysql.Driver</value> 
    </property> 
    <property name="url"> 
        <value>jdbc:mysql://localhost:3306/test?useUnicode=true&amp;characterEncoding=UTF-8</value> 
    </property> 
    <property name="username"> 
        <value>root</value> 
    </property> 
    <property name="password"> 
        <value>123456</value> 
    </property> 
</bean> 
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> 
    <property name="dataSource" ref="jdbcDataSource" /> 
    <property name="configLocation" value="classpath:mybatis-config.xml"></property> 
</bean> 
<bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean"> 
    <property name="mapperInterface" value="dao.UserMapper"></property> 
    <property name="sqlSessionFactory" ref="sqlSessionFactory"></property> 
</bean> 
</beans> 

关于Spring配置的说明:
Spring没有内置的提供对MyBatis的支持,配置sqlSessionFactory和userMapper所需要的class是来自于mybatis-spring-1.1.1.jar。

第七步:测试
在src下创建一个test包,并在其下创建一个test.java文件
Java代码  收藏代码
package test; 
 
import model.User; 
 
import org.springframework.context.ApplicationContext; 
import org.springframework.context.support.ClassPathXmlApplicationContext; 
 
import dao.UserMapper; 
 
public class test { 
    public static void main(String[] args) { 
        ApplicationContext ctx=null; 
        ctx=new ClassPathXmlApplicationContext("applicationContext.xml"); 
        UserMapper userMapper=(UserMapper)ctx.getBean("userMapper"); 
        User u=new User(); 
        u.setUsername("admin"); 
        u.setPassword("admin"); 
        System.out.println(userMapper.selectUser(u)); 
        //插入(去掉下面的注释进行调试) 
        /*
        User insertUser=new User();
        insertUser.setUsername("testUsername");
        insertUser.setPassword("testPassword");
        userMapper.insertUser(insertUser);
        */ 
        //更新(去掉下面的注释进行调试) 
        /*
        u.setId(1);
        u.setPassword("updatePassword");
        userMapper.updateUser(u);
        */ 
        //删除(去掉下面的注释进行调试) 
        /*
        userMapper.deleteUser(9);
        */ 
    } 


//转至 www.haoby.cn

猜你喜欢

转载自chenyahui.iteye.com/blog/2194118