2、前期准备:(1)、对mybatis有一定的了解,能够使用其基本功能。(2)、理解spring的相关原理和概念
3、总体的包和类等等
所以,在我们开始之前,请自己下载好相关的jar包,包括
(spring:)
http://repo.spring.io
(mybatis:)
https://github.com/mybatis/mybatis-3/releases
(mybatis-spring:)
https://github.com/mybatis/spring/releases
百度云下载链接
4、配置applicationContext.xml文件:(配置文件里面的前16行是我随便在网上找的,宜多不宜少)
<?xml version="1.0" encoding="UTF-8"?>5、models,包括user和manager
<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:util="http://www.springframework.org/schema/util"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-3.1.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd">
<!-- 数据源 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close">
<property name="driverClass" value="com.mysql.jdbc.Driver"/>
<property name="jdbcUrl" value="jdbc:mysql://localhost/test"/>
<property name="user" value="root"/>
<property name="password" value=""/>
</bean>
<!-- 注意:这个class是jar包中的 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
</bean>
<!-- 关联sqlSessionFacotry, 生成相关的sqlSession; 对mybatis的mapper接口,注入成beans -->
<!-- 注意:这个class是jar包中的 -->
<bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
<!-- 注意:这个是value,不是class -->
<property name="mapperInterface" value="com.dao.UserMapper"/>
<property name="sqlSessionFactory" ref="sqlSessionFactory"/>
</bean>
<!-- 这个和上面的bean是差不多的 -->
<bean id="managerMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
<property name="mapperInterface" value="com.dao.ManagerMapper"/>
<property name="sqlSessionFactory" ref="sqlSessionFactory"/>
</bean>
<!-- 业务bean -->
<bean id="testService" class="com.impl.TestServiceImpl">
<property name="userMapper" ref="userMapper"/>
<property name="managerMapper" ref="managerMapper"/>
</bean>
</beans>
public class User {
private int id;
private String name;
private String password;
public User(){
}
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 String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
6、mybatis的mapper接口:(没有,也不用实现类)package com.models;
public class Manager {
private int id;
private String name;
private String password;
public Manager(){
}
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 String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
package com.dao;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import com.models.User;
public interface UserMapper {
@Select("SELECT * FROM user WHERE id = #{id}")
public User getUser(@Param("id") String userId);
}
7、写到这里,我们的工作已经基本上完成了大部分,让我们写一个main函数测试一下:imp
ort org.apache.ibatis.annotations.Select;
import com.models.Manager;
public interface ManagerMapper {
@Select("SELECT * FROM manager WHERE id = #{id}")
public Manager getManager(String managerID);
}
package com.test;8、接下来,我们写事物的业务接口和实现此接口的业务类:
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
import com.dao.UserMapper;
import com.models.Manager;
import com.models.User;
import com.service.TestService;
public class SpringTest {
public static void main(String[] args) {
ApplicationContext aa = new FileSystemXmlApplicationContext("classpath:applicationContext.xml");
//在我数据库中的userId有1这一条
User user = (User)aa.getBean(UserMapper.class).getUser("1");
System.out.println(user.getId());
System.out.println(user.getName());
System.out.println(user.getPassword());
}
}
先看业务接口:
再看看实现类:(注意,下面的两个setter方法不能省略,可以省略getter方法)package com.service;
import com.models.Manager;
import com.models.User;
public interface TestService {
public User doSomeBusinessStuff(String userID);
public Manager getManagerBusiness(String managerID);
}
9、因为之前我们已经在applicationContext.xml文件中配置了上面这个业务实现类的bean,所以,我们的工作已经完成,let我们test一下:package com.impl;
import com.dao.ManagerMapper;
import com.dao.UserMapper;
import com.models.Manager;
import com.models.User;
import com.service.TestService;
public class TestServiceImpl implements TestService{
private UserMapper userMapper;
private ManagerMapper managerMapper;
public void setUserMapper(UserMapper userMapper){
this.userMapper = userMapper;
}
public void setManagerMapper(ManagerMapper managerMapper) {
this.managerMapper = managerMapper;
}
@Override
public User doSomeBusinessStuff(String userID) {
return this.userMapper.getUser(userID);
}
@Override
public Manager getManagerBusiness(String managerID) {
return this.managerMapper.getManager(managerID);
}
}
参考文献:http://mybatis.github.io/spring/package com.test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
import com.dao.UserMapper;
import com.models.Manager;
import com.models.User;
import com.service.TestService;
public class SpringTest {
public static void main(String[] args) {
ApplicationContext aa = new FileSystemXmlApplicationContext("classpath:applicationContext.xml");
/*User user = (User)aa.getBean(UserMapper.class).getUser("1");
System.out.println(user.getId());
System.out.println(user.getName());
System.out.println(user.getPassword());*/
TestService service = aa.getBean(TestService.class);
//调用业务实现类的第一个方法
User user = service.doSomeBusinessStuff("1");
System.out.println(user.getId());
System.out.println(user.getName());
System.out.println(user.getPassword());
//调用业务实现类的第二个方法
Manager manager = service.getManagerBusiness("1");
System.out.println("manager info = "+manager.getId()+"; "+manager.getName()+"; "+manager.getPassword());
}
}10、跑起来了吗?come on!!!!!
##############################################################################
11、前面我们使用annotation配置mybatis的,但是在实际的项目开发中使用xml文件配置的方式比较多。
所以,下面我们在前面的基础之上使用xml文件配置:
(1)、新增加两个文件,也就是mybatis的xml配置文件,是在config.mappers包下面的:
<?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.dao.UserMapper">
<select id="getUser" parameterType="String" resultType="com.models.User">
select * from user where id = #{userID}
</select>
</mapper>
<?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.dao.ManagerMapper">
<select id="getManager" resultType="com.models.Manager" parameterType="String">
Select * From manager where id = #{managerID}
</select>
</mapper>