mybati与spring的整合

需要的jar包:

Spring
在这里插入图片描述

MyBatis
在这里插入图片描述
Mybatis-Spring
在这里插入图片描述
数据库驱动包
在这里插入图片描述
在这里插入图片描述
准备完毕,开始配置
 
 
 
  
1

创建项目:

引入jar包
在这里插入图片描述

编写db.properties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/spring_test
jdbc.username=root
jdbc.password=root
jdbc.maxTotal=30
jdbc.maxIdle=10
jdbc.initialSize=5

编写spring的配置文件ApplicationContext.xml

<?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:aop="http://www.springframework.org/schema/aop"
	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-4.3.xsd
                 http://www.springframework.org/schema/aop
                 http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
                 http://www.springframework.org/schema/context
                 http://www.springframework.org/schema/context/spring-context-4.3.xsd
                 http://www.springframework.org/schema/tx
                 http://www.springframework.org/schema/tx/spring-tx-4.3.xsd">
    <!-- 从自建的文件中导入外部数据 -->
    <context:property-placeholder location="classpath:db.properties"/>
	<!-- 
	配置数据源
	现在从第三方包commons-dbcp里面找数据源
	 -->
	<bean id="dataSource"
		class="org.apache.commons.dbcp2.BasicDataSource">
		<property name="driverClassName"
			value="${jdbc.driver}"></property>
		<property name="url"
			value="${jdbc.url}"></property>
		<property name="username" value="${jdbc.username}"></property>
		<property name="password" value="${jdbc.password}"></property>
		<!-- 用第dbcp的数据源后还要加些配置 -->
		<!-- 最大连接数 -->
		<property name="maxTotal" value="${jdbc.maxTotal}"/>
		<!-- 最大空闲连接数 -->
		<property name="maxIdle" value="${jdbc.maxIdle}"/>
		<!-- 初始化连接数 -->
		<property name="initialSize" value="${jdbc.initialSize}"/>
	</bean>
	<!-- 事务管理器 依赖于数据源 -->
	<!-- 配置jdbc的事务管理器  -->
	<bean name="transactionManager"
		class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<!-- 注入数据源,spring的jdbc事务管理器在管理事务时,依赖于JDBC的事务管理机制 -->
		<property name="dataSource" ref="dataSource"></property>
	</bean>
	
	
	<!-- 开启事务注解,注入事务管理器驱动 -->
	<tx:annotation-driven transaction-manager="transactionManager"/>
	
	<!-- MyBatis 与 Spring的整合 -->
	<!-- 配置MyBatis工厂 class从mybatis-spring包中找 -->
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<!-- 注入数据源 -->
		<property name="dataSource" ref="dataSource"/>
		<!-- 指定Mybatis核心配置文件的位置 -->
		<property name="configLocation" value="classpath:mybatis-config.xml"></property>
	</bean>
	
	<bean id="accountDao" class="com.sjw.dao.impl.AccountDaoImpl">
		<!-- AccountDaoImpl继承了SqlSessionDaoSupport -->
		<!-- SqlSessionDaoSupport类中需要我们为他提供sqlSessionFactory -->
		<!-- 于是我为SqlSessionDaoSupport注入了我上面配置的MyBatis工厂 -->
		<!-- property name要注入数据的参数名(SqlSessionDaoSupport存在的、具有set方法的成员变量) -->
		<!-- property ref 注入一个对象型的参数 -->
		<property name="sqlSessionFactory" ref="sqlSessionFactory"/>
	</bean>
	
	<!-- Mapper代理开发(基于MapperFactoryBean) -->
	  <bean id="Mapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
		<property name="mapperInterface" value="com.sjw.mapper.AccountMapperDao"/>
		<property name="sqlSessionFactory" ref="sqlSessionFactory"/>
		
	</bean>
	
	<!-- Mapper代理开发(基于MapperScannerConfigurer) -->
	<!--<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<property name="basePackage" value="com.sjw.mapper"/>
	</bean>-->
</beans>

编写MyBatis的配置文件mybatis-config

<?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>
	
	<!-- 配置Mapper的位置 -->
	<mappers>
	<!-- 可配置多个mapper -->
		<mapper resource="com/sjw/po/AM.xml" />
		 <mapper resource="com/sjw/mapper/Mapper.xml" />
	</mappers>
</configuration>

引入配置日志log4j.properties

# Global logging configuration
log4j.rootLogger=ERROR, stdout 
# MyBatis logging configuration... 
log4j.logger.com.itheima=DEBUG
# Console output... 
log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

pojo类 Account

package com.sjw.po;

public class Account {
	
	private int id;
	private String username;
	private double balance;
	
	
	
	public Account(String username, double balance) {
		super();
		this.username = username;
		this.balance = balance;
	}
	public Account() {
		super();
	}
	@Override
	public String toString() {
		return "Account [id=" + id + ", username=" + username + ", balance=" + balance + "]";
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public double getBalance() {
		return balance;
	}
	public void setBalance(double balance) {
		this.balance = balance;
	}
	

}

接口类 AccountMapperDao

package com.sjw.mapper;

import com.sjw.po.Account;

public interface AccountMapperDao {
	public Account findAccountById(int id);
}

MyBatis映射器 AccountMapperDao.xml

<?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">

<!-- namespace表示命名空间-->
<mapper namespace="com.sjw.mapper.AccountMapperDao">
	<select id="findAccountById" parameterType="int" resultType="com.sjw.po.Account">
		select * from account where id=#{id}
	</select>
</mapper>

数据
在这里插入图片描述

测试方法

@Test
	public void findAccountMapperTest() {
		ApplicationContext ac=new ClassPathXmlApplicationContext("ApplicationContext.xml");
		AccountMapperDao aDao=(AccountMapperDao) ac.getBean(AccountMapperDao.class);
		Account account=aDao.findAccountById(2);
		System.out.println(account.toString());
	}

基于MapperFactoryBean方法的测试

<!-- Mapper代理开发(基于MapperFactoryBean) -->
	<bean id="Mapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
		<property name="mapperInterface" value="com.sjw.mapper.AccountMapperDao"/>
		<property name="sqlSessionFactory" ref="sqlSessionFactory"/>
		
	</bean>

结果
在这里插入图片描述

注释掉基于MapperFactoryBean方法的测试,开始基于MapperScannerConfigurer的测试

<!-- Mapper代理开发(基于MapperScannerConfigurer) -->
	 <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<property name="basePackage" value="com.sjw.mapper"/>
	</bean>

结果一样可行
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值