Spring整合MyBatis框架

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

第一步:创建数据库表 

在MySQL中执行如下sql命令创建表User: 

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;

然后插入测试数据

INSERT INTO user VALUES ('1', 'admin', 'admin');

第二步:创建model 

创建一个model包并在其下创建一个User.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接口。 

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 version="1.0" encoding="UTF-8"?>  
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"   
"https://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 version="1.0" encoding="UTF-8" ?>  
<!DOCTYPE configuration PUBLIC  
    "-//mybatis.org//DTD Config 3.0//EN"  
    "https://mybatis.org/dtd/mybatis-3-config.dtd">  
<configuration>  
    <mappers>  
        <mapper resource="dao/UserMapper.xml"/>  
    </mappers>  
</configuration>

第六步:在Spring中配置数据源 

在src下创建一个ApplicationContext.xml文件作为Spring的配置文件,这里我们使用Spring自带的Jdbc数据源,读者可以根据实际需要替换为其他数据源。 

<?xml version="1.0" encoding="UTF-8"?>  
<beans  
    xmlns="https://www.springframework.org/schema/beans"  
    xmlns:tx="https://www.springframework.org/schema/tx"  
    xmlns:p="https://www.springframework.org/schema/p"  
    xmlns:aop="https://www.springframework.org/schema/aop"   
    xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"  
    xsi:schemaLocation="https://www.springframework.org/schema/beans   
    https://www.springframework.org/schema/beans/spring-beans-3.0.xsd   
    https://www.springframework.org/schema/tx   
    https://www.springframework.org/schema/tx/spring-tx-3.0.xsd   
    https://www.springframework.org/schema/aop    
    https://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文件 

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); 
        */  
    }  
}
游手好闲地学习,并不比学习游手好闲好。 —— 约翰·贝勒斯
0 不喜欢
说说我的看法 -
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
其他应用
公众号