Spring 和Mybatis 整合
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring 和Mybatis 整合相关的知识,希望对你有一定的参考价值。
首先我们创建一个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.
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‘);
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"
- "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 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 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&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);
- */
- }
- }
以上是关于Spring 和Mybatis 整合的主要内容,如果未能解决你的问题,请参考以下文章
springboot使用之二:整合mybatis(xml方式)并添加PageHelper插件
Idea+maven+spring-cloud项目搭建系列--13 整合MyBatis-Plus多数据源dynamic-datasource