SSM整合Mybatis

Author Avatar
Akun 10月 21,2021

SpringMVC整合Mybatis

准备

导入jar包

  • mysql驱动

    <dependency>
    	<groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    	<version>“本身数据库对应的版本号”</version>
    </dependency>
    
  • mybatis

    <dependency>
    	<groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
    	<version>3.5.4</version>
    </dependency>
    

建库建表

配置

映射文件

  • 在类路径下创建一个独立的目录mapper,用以存放映射文件

  • 创建XMl文件(如:UserMapper.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="">
    	<select></select>
    	<update></update>
    	<insert></insert>
    	<delete></delete>
    </mapper>
    
  • 其中mapper中的namespace命名空间属性,用来指定需要映射的Mapper接口

  • 在mapper根标签下,有着select、update、insert、delect等标签,分别用以指定各自的语句格式

  • 在上面四种标签中有着各种属性

    • id:指定Mapper接口的方法名
    • parameterType:指定传入形参的数据类型
    • resultType:指定返回的数据类型
    • useGeneratedKey & keyProperty:两者结合,使得在插入操作时,能够返回主键

配置文件

  • 在类路径下创建一个XMl文件(如:mybatis-config.xml),在其中进行相关配置

  • 在其中添加约束头(同映射文件的约束头不同)

    <?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>
    
  • 在configuration根标签下,有着许多标签

    • properties:用来定义变量,将配置写进config文件中
    • settings:设置全局参数,一般来说使用默认的配置即可
    • typeAliases:设置类型别名
    • typeHandlers:设置自定义类型处理器
    • objectFactory:一般不需要配置
    • plugins:mybatis的插件,如分页助手
    • environments:配置数据库环境
    • mapper:指定mapper文件的位置
  • 事实上,只需要配置其中为数不多的标签即可

    • environments & mapper:配置数据库环境以及mapper文件后,即可进行基本的mybatis操作

引入配置文件

  • 在spring的配置文件中,引入mybatis配置

    <?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:tx="http://www.springframework.org/schema/tx"
           xmlns:context="http://www.springframework.org/schema/context"
           xmlns:aop="http://www.springframework.org/schema/aop"
           xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
                                http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
                                http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
                                http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/aop https://www.springframework.org/schema/aop/spring-aop.xsd">
    
    	<!--  配置c3p0数据源  -->
        <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
            <property name="driverClass" value="com.mysql.cj.jdbc.Driver"/>
            <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/test?serverTimezone=Asia/Shanghai"/>
            <property name="user" value="root"/>
            <property name="password" value="root"/>
        </bean>
    
    	<!--  配置SqlSessionFactoryBean对象 (此处相当于配置environments)  -->
        <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    		<!--  配置数据源  -->
            <property name="dataSource" ref="dataSource"/>
    		<!--  配置配置文件的位置  -->
            <property name="configLocation" value="classpath:mybatis-config.xml"/>
    		<!--  配置映射文件的位置  -->
            <property name="mapperLocations" value="classpath:mybatis/*Mapper.xml"/>
        </bean>
    
    	<!--  配置MapperScannerConfigurer (配置mapper接口的包名)  -->
        <bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
            <property name="basePackage" value="com.aurorae.mapper"/>
        </bean>
    </beans>
    

  • 拥有了以上的配置,配置文件中就可以不进行任何配置(约束头还是需要的,所以说这个文件还需要存在)

完成

  • 建立的mapper接口(需要打上Mapper注解),每一个mapper接口都与一个映射文件中的命名空间所对应,mapper接口中的每一个方法都与所在对应id对应
  • 此时,通过自动注入,获得mapper对象,直接调用对象的方法即可执行相应的sql语句