Spring+Mybatis的整合应用

Spring:

         Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。

    -轻量级:Spring 是非侵入性的 - 基于 Spring 开发的应用中的对象可以不依赖于Spring 的 API
    -依赖注入(DI --- dependency injection、IOC)
    -面向切面编程(AOP --- aspect oriented programming)
    -容器: Spring 是一个容器, 因为它包含并且管理应用对象的生命周期
    -框架: Spring 实现了使用简单的组件配置组合成一个复杂的应用. 在 Spring 中可以使用 XML 和 Java 注解组合这些对象
    -一站式:在 IOC 和 AOP 的基础上可以整合各种企业应用的开源框架和优秀的第三方类库 (实际上 Spring 自身也提供了展现层的 SpringMVC 和 持久层的 Spring JDBC)

Mybatis:

    MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。

    MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

开始整合Spring+Mybatis:

1.创建一个简单的数据库和一张简单的数据表



 2.在eclipse中创建一个java工程,并导入以下jar包

 

 

 

 3.在工程中创建domain和dao


 

package com.test.domain;

public class User {

	private int id;
	private String name;
	private int age;

	public void setId(int id) {
		this.id = id;
	}

	public int getId() {
		return id;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getName() {
		return name;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public int getAge() {
		return age;
	}

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

}

  

package com.test.userdao;

import com.test.domain.User;

public interface UserDao {
	
	public User getUser(String name);
	public void insertUser(User user);
	public void deleteUser(int id);
	public void updateUser(User user);
	
}

 创建mybatis映射文件UserMapper

<?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.test.userdao.UserDao">
	<resultMap type="com.test.domain.User" id="User">
		<result property="id" column="id" />
		<result property="name" column="name" />
		<result property="age" column="age" />
	</resultMap>

	<select id="getUser" parameterType="String" resultMap="User">
		select
		u.id,u.name,u.age from user u where name=#{name}
	</select>

	<insert id="insertUser">
		INSERT INTO user (id,name,age) VALUES (#{id},#{name},#{age})
	</insert>

	<update id="updateUser" parameterType="com.test.domain.User">
		UPDATE user SET name=#{name},age=#{name} WHERE id=#{id}
	</update>

	<delete id="deleteUser" parameterType="int">
		DELETE FROM user WHERE id=#{id}
	</delete>

</mapper>

 

4,在根目录下创建spring及mybatis的配置文件

<?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="com/test/userdao/UserMapper.xml"/> 
	</mappers>
</configuration>

 

<?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:p="http://www.springframework.org/schema/p"
	xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.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">

	<!-- 1. 数据源 : DriverManagerDataSource -->
	<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/test" />
		<property name="username" value="root" />
		<property name="password" value="123456" />
	</bean>

	<!-- 2. mybatis 的 SqlSession 的工厂: SqlSessionFactoryBean -->
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource" />
                 <!--此处若配置属性mapperLocations,值为classpath:com/test/userdao/*.xml,可不必再使用mybatis.xml文件-->
		<property name="configLocation" value="classpath:mybatis.xml"></property>
	</bean>

	<!-- 3. mybatis 自动扫描加载 Sql 映射文件 : MapperScannerConfigurer -->
	<bean id="userDao" class="org.mybatis.spring.mapper.MapperFactoryBean">
		<property name="mapperInterface" value="com.test.userdao.UserDao" />
		<property name="sqlSessionFactory" ref="sqlSessionFactory" />
	</bean>

	<bean id="txManager"
		class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource" />
	</bean>

	<!-- 5. 使用声明式事务 -->
	<tx:annotation-driven transaction-manager="txManager" />


</beans>

5,创建测试方法

 

package com.test.usercontroller;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.test.domain.User;
import com.test.userdao.UserDao;

public class UserController {
	
	public static void main(String[] args) {
		
		ApplicationContext cx = new ClassPathXmlApplicationContext("spring.xml");
		
		UserDao ud = (UserDao) cx.getBean("userDao");
		
		User user=ud.getUser("jim");
		
		System.out.println(user);
		
	}
	
}

  

 

           一个菜鸟的学习笔记,写的不到地方望多指正批评。

猜你喜欢

转载自codingfarmer-v.iteye.com/blog/2298311