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); } }
一个菜鸟的学习笔记,写的不到地方望多指正批评。