SSM简单整合——Spring整合Mybatis

    技术2024-01-08  105

    这一篇是接着上一篇SSM简单整合——Spring整合SpringMVC继续的,已完成SSM的简单整合。

    编写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> <environments default="mysql"> <environment id="mysql"> <transactionManager type="JDBC"></transactionManager> <dataSource type="POOLED"> <property name="driver" value="com.mysql.cj.jdbc.Driver"/> <property name="url" value="jdbc:mysql://127.0.0.1:3306/ssm?serverTimezone=UTC"/> <property name="username" value="root"/> <property name="password" value="liang"/> </dataSource> </environment> </environments> <mappers> <mapper resource="com/liang/dao/AccountDao.xml"/> </mappers> </configuration>

    编写AccountDao映射配置文件(com/liang/dao/AccountDao.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"> <mapper namespace="com.liang.dao.AccountDao"> <!--查询所有--> <select id="findAll" resultType="com.liang.domain.Account"> select * from account; </select> <insert id="saveAccount" parameterType="com.liang.domain.Account"> insert into account(name, money) values(#{name},#{money}) </insert> </mapper>

    编写测试类

    package com.liang.test; import com.liang.dao.AccountDao; import com.liang.domain.Account; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.junit.After; import org.junit.Before; import org.junit.Test; import java.io.IOException; import java.io.InputStream; import java.util.List; /** * 测试Mybatis独立使用 */ public class MybatisTest { SqlSession sqlSession = null; InputStream inputStream = null; AccountDao accountDao = null; @Before public void before() throws IOException { inputStream = Resources.getResourceAsStream("mybatis.xml"); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); sqlSession = sqlSessionFactory.openSession(); accountDao = sqlSession.getMapper(AccountDao.class); } /** * 测试查询所有 * @throws IOException */ @Test public void mybatisTestFindAll() throws IOException { List<Account> accounts = accountDao.findAll(); for (Account account : accounts){ System.out.println(account); } } /** * 测试保存账户 */ @Test public void mybatisTestSaveAccount(){ Account account = new Account(); account.setName("娃哈哈"); account.setMoney(999.0); accountDao.saveAccount(account); } @After public void after() throws IOException { sqlSession.close(); inputStream.close(); } }

    需要的jar包

    <!--mybatis--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.5</version> </dependency> <!--mysql--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.20</version> </dependency>

    Spring整合Mybatis

    整合思路:把mybatis配置文件中内容配置到spring配置文件中,同时把mybatis配置文件的内容清除掉。删除AccountDao接口的实现类。 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> </configuration>

    把Mybatis配置文件中的内容配置到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" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"> <!--配置spring创建容器时要扫描的包--> <context:component-scan base-package="com.liang"> <!--表示不扫描@Controller注解的java类--> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/> </context:component-scan> <!--配置数据源--> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/> <property name="url" value="jdbc:mysql:///ssm?serverTimezone=UTC"/> <property name="username" value="root"/> <property name="password" value="liang"/> </bean> <!--配置Mybatis的Session工程--> <bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean"> <!--数据库连接池--> <property name="dataSource" ref="dataSource"/> <property name="configLocation" value="classpath:mybatis.xml"/> </bean> <!--配置Mapper扫面器--> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.liang.dao"/> </bean> <!--配置事务管理器--> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"/> </bean> <!--配置事务的通知--> <tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="*" propagation="REQUIRED" read-only="false"/> <tx:method name="find*" propagation="SUPPORTS" read-only="true"/> </tx:attributes> </tx:advice> <!--配置aop--> <aop:config> <!--配置切入点表达式--> <aop:pointcut id="pt1" expression="execution(* com.liang.service.impl.*.*(..))"/> <!--建立通知和切入点表达式的关系--> <aop:advisor advice-ref="txAdvice" pointcut-ref="pt1"/> </aop:config> </beans>

    需要的jar包

    <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>2.0.5</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>5.2.2.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>5.2.2.RELEASE</version> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.9.5</version> </dependency>
    Processed: 0.008, SQL: 9