Spring和MyBatis的整合

MyBatis作为一种轻量级的ORM框架,使用起来比Hibernate更加的简便,通过使用"原生的"SQL语句操作数据,所以个人认为MyBatis更加需要有SQL的基础,那么MyBatis怎么集成Spring呢?

①,加入所需要的Jar包

150813_ZqNS_2841582.png

②.创建实体类和数据表

package com.imooc.SpringAndMybatis.Entity;

import java.util.Date;
/*实体类*/
public class User {
	private int id;
	private String name;
	private Date birthday;
	private double salary;

	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 Date getBirthday() {
		return birthday;
	}

	public void setBirthday(Date birthday) {
		this.birthday = birthday;
	}

	public double getSalary() {
		return salary;
	}

	public void setSalary(double salary) {
		this.salary = salary;
	}

	@Override
	public String toString() {
		return "User [id=" + id + ", name=" + name + ", birthday=" + birthday + ", salary=" + salary + "]";
	}

	public User(int id, String name, Date birthday, double salary) {
		super();
		this.id = id;
		this.name = name;
		this.birthday = birthday;
		this.salary = salary;
	}

	public User() {
		super();
	}
}
mysql> create table user(
    -> user_id int primary key auto_increment,
    -> user_name varchar(30),
    -> user_birthday Date,
    -> user_salary Double
    -> );
Query OK, 0 rows affected (0.45 sec)

mysql> show tables;
+----------------------------+
| Tables_in_springandmybatis |
+----------------------------+
| user                       |
+----------------------------+
1 row in set (0.00 sec)

mysql> desc user;
+---------------+-------------+------+-----+---------+----------------+
| Field         | Type        | Null | Key | Default | Extra          |
+---------------+-------------+------+-----+---------+----------------+
| user_id       | int(11)     | NO   | PRI | NULL    | auto_increment |
| user_name     | varchar(30) | YES  |     | NULL    |                |
| user_birthday | date        | YES  |     | NULL    |                |
| user_salary   | double      | YES  |     | NULL    |                |
+---------------+-------------+------+-----+---------+----------------+

③.创建接口和实体类的SQL映射文件

151534_HAmJ_2841582.png

    |--建议:接口的名称和SQL映射文件的名称相同,.并且放在同一个包中

④.接口中方法的定义,以及在SQL映射文件中对方法的书写!

package com.imooc.SpringAndMybatis.Mapper;

import com.imooc.SpringAndMybatis.Entity.User;

public interface UserMapper
{
	void save(User user);
}
<?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="com.imooc.SpringAndMybatis.Mapper.UserMapper">
	<insert id="save" parameterType="User">
		insert into user (user_name,user_birthday,user_salary) Values(#{name},#{birthday},#{salary})
	</insert>
</mapper>

注意点:1). SQL映射文件的nameSpace的值必须是接口的全类名!

           2). SQL映射文件中的方法名和接口中定义的方法一定要相同(不然呢?)

           3). 如果数据表的字段名和实体类的属性名不一致,还需要使用<resultMap>解决

⑤. 配置Spring的配置文件

         |--配置数据源:DriverManagerDataSource
        |--配置MyBatis的SQLSessionFactory实例
            |--配置datasource    
            |--配置typeAliasesPackage(别名)
                |--即:配置实体类所在的位置
        |--配置自动扫描MyBatis的SQL映射文件:MapperScannerConfigurer
            |--sqlSessionFactory 
            |--basePackage:扫描指定SQL映射文件/接口所在的包(自动的)
                |--即:配置sql映射文件所在位置
        |--配置事务管理器
            |--配置datasource
        |--配置使用声明式事务

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:mybatis-spring="http://mybatis.org/schema/mybatis-spring"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring-1.2.xsd
		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd
		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd">
	<!-- 配置数据源以及连接数据库的一些信息 -->
	<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
		<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
		<property name="url" value="jdbc:mysql://localhost:3306/SpringAndMyBatis"/>
		<property name="username" value="root"/>
		<property name="password" value="123"/>
	</bean>
	<!-- 配置SQLSessionFactory
			● 数据源
			● 配置别名(实体类所在位置)
	 -->
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource"></property>
		<property name="typeAliasesPackage" value="com.imooc.SpringAndMybatis.Entity"></property>
	</bean>
	<!-- 配置自动扫描加载SQL映射文件
			● sqlSessionFactory
			● 配置SQL映射文件所在的位置
	 -->
	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
		<property name="basePackage" value="com.imooc.SpringAndMybatis.Mapper"></property>
	</bean>
	<!-- 配置事务管理器 -->
	<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource"></property>
	</bean>
	<!-- 配置使用事务注解 -->
	<tx:annotation-driven transaction-manager="transactionManager"/>
</beans>

⑥. 最后就是测试啦

package com.imooc.SpringAndMybatis.Test;

import java.util.Date;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.imooc.SpringAndMybatis.Entity.User;
import com.imooc.SpringAndMybatis.Mapper.UserMapper;

public class SpringAndMyBatisTest2 
{
	private ApplicationContext context=new ClassPathXmlApplicationContext("beans.xml");
	private UserMapper userMapper=context.getBean(UserMapper.class);
	@Test
	public void Save()
	{
		User user=new User();
		user.setName("AA");
		user.setBirthday(new Date());
		user.setSalary(2000);
		userMapper.save(user);
	}
}

查看数据库(因为之前插入过几条数据,所以这里不止一条...)

mysql> select * from user;
+---------+-----------+---------------+-------------+
| user_id | user_name | user_birthday | user_salary |
+---------+-----------+---------------+-------------+
|       1 | AA        | 2017-02-08    |        2000 |
|       2 | AA        | 2017-02-08    |        2000 |
|       3 | AA        | 2017-02-08    |        2000 |
+---------+-----------+---------------+-------------+
3 rows in set (0.00 sec)

 

转载于:https://my.oschina.net/ZYLzzz/blog/834078

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值