SSM整合配置详解 (Spring——MyBatis)

/**导入架包
配置文件
conf.xml(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>
	
	<typeAliases>
        <package name="com.project.bean"/>
	</typeAliases>
	<!--用的是注解下面的mapper可以不要-->
	<!-- <mappers>
		<mapper resource="com/project/mapper/UserBeanMapper.xml"/>
	</mappers> -->
	
</configuration>



mapper(mybatis)
applicationContext.xm(Spring
applicationContext.xm(Spring)
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    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.xsd">
<!-- 先将mybaits数据源注入到容器 ,导入jdbc架包-->
	<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
		<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
		<property name="url" value="jdbc:mysql://127.0.0.1:3306/mysqltest"></property>
		<property name="username" value="root"></property>
		<property name="password" value="xcb"></property>
	</bean>
<!-- 注册一个sqlsessionfactory对象给容器 -->
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource"></property>
		<!-- 在spring容器中加载mybaits配置文件 -->
		<property name="configLocation" value="classpath:conf.xml"></property>
	</bean>
	<!-- 注册一个sqlsessionfactory对象 -->针对mybatis的
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource"></property>
		<!-- 在spring容器中加载mybaits配置文件 -->
		<property name="configLocation" value="classpath:conf.xml"></property>
	</bean>
	<!-- 注入一个数据映射器,告诉容器Spring 的注解再什么地方,配置文件就需要,
注解的两个作业--读注解--不要持久层实现类,交给Spring容器帮我们管理 -->
	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<property name="basePackage" value="com.project.dao"></property>
	</bean>
<!-- 产生userDaoImpl ,技术的角度可以不要实现类,从项目结构维护性来说还是需要-->
	<bean id="userDaoImpl" class="com.project.dao.impl.UserDaoImpl">
		<property name="fa" ref="sqlSessionFactory"></property>
	</bean>
	
<!-- 注册一个事务管理器 ,需要数据源,要把事务提升到业务层,为动态代理事务注册三个属性,在Spring事务里面详解为什么需要事务管理器-->
	<bean class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource"></property>
	</bean>
1
1
持久层实现类比如现在有个UserDaoImpl
package com.project.dao.impl;

import java.io.InputStream;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import com.project.bean.UserBean;
import com.project.dao.IUserDao;

public class UserDaoImpl implements IUserDao{

	private SqlSessionFactory fa;
	
	//要给 SqlSessionFactory提供set方法,因为我们要在applicationContext.xml中将             //SqlSessionFactory注入给userDaoImpl实现类
	public void setFa(SqlSessionFactory fa) {
		this.fa = fa;
	}
	@Override
	public void login() {
		
		System.out.println("正在进行登录");
		
	}
	@Override
	public void register() {
		
		System.out.println("正在进行注册");
		
	}
	@Override
	public void findAll() {
		System.out.println("正在获取所有的用户信息");
		
	}
//通过工厂产生session
	@Override
	public UserBean findById(int id) {
		SqlSession session = fa.openSession();
		UserBean bean=null;
		try {
			IUserDao dao = session.getMapper(IUserDao.class);
			bean = dao.findById(id);

			
		} catch (Exception e) {
			// TODO: handle exception
		}finally{
			session.close();
		}
		return bean;
	}
}

1
新建一个测试类TestMain
package com.project.test;

import java.io.InputStream;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.project.bean.UserBean;
import com.project.dao.IUserDao;
import com.project.dao.impl.UserDaoImpl;

public class TestMain {
	@Test
	public void test(){
		ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
		/*
		 * 区别:
		 * getBean(IUserDao.class.xxx)
		 * getBean("xxx")
		 *  
		 *  
		 *  采用aop编程,获取到的动态代理对象,jdk?cglib
		 *  
		 *  代理的对象如果有接口,默认使用jdk动态代理
		 *  代理的对象没有接口是pojo类,使用cglib动态代理
		 * */
		IUserDao dao = (IUserDao) context.getBean("userdao2");
		
		dao.login();
		dao.register();
		System.out.println("======");
		dao.findAll();
		//dao.findById();
		
		UserBean bean = (UserBean) context.getBean("userbean");
		System.out.println(bean);
	}
	
	@Test
	public void test2(){
		ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
		IUserDao dao = (IUserDao) context.getBean("userDaoImpl");
		
		UserBean bean = dao.findById(1);
		System.out.println(bean);
	}
}

*/


			   				

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值