1.spring-mybatis.xml 的作用
配置数据源>>创建 sqlsessionFactory>>生成 mapper 代理
2.步骤
2.1 配置数据源
-
外部db.properties 文件
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/student
jdbc.username=root
jdbc.password=root
2. 引入外部文件
<!--引用外部文件-->
<context:property-placeholder location="classpath:db.properties"/>
-
真正配置数据源
-
加入依赖
<!-- mysql -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<!--druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.12</version>
</dependency>
-
用的类是:DruidDataSource
-
property 后的name :在这里是固定的 ,value:是外部文件db.properties 中的键
-
<!--配置数据源-->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
<property name="driverClassName" value="${jdbc.driver}"/> <!--写这个时 要用到 db.properties-->
<property name="url" value="${jdbc.url}"/> <!--写这个时 要用到 db.properties-->
<property name="username" value="${jdbc.username}"/> <!--写这个时 要用到 db.properties-->
<property name="password" value="${jdbc.password}"/> <!--写这个时 要用到 db.properties-->
</bean>
2.2创建sqlsessionFactory
-
作用
-
SqlSessionFactory是创建SqlSession的工厂
-
SqlSession:是执行持久化操作的对象,类似于JDBC中的Connection。SqlSession对象完全包括以数据库为背景的所有执行SQL操作的方法,它的底层封装了JDBC连接,可以用SqlSession实例来直接执行已映射的SQL语句
-
-
MybatisSqlSessionFactoryBean(mybatis-plus)和SqlSessionFactoryBean(mybatis)
<!--创建 sqlSessionFactory--> <bean id="sessionFactory" class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean"> <!--org.mybatis.spring.SqlSessionFactoryBean --> <!--引入数据源--> <property name="dataSource" ref="dataSource"/> <!--配置mapper 映射文件得位置--> <property name="mapperLocations" value="classpath:net/wanho/mapper/*.xml"/> <!--类别名--> <property name="typeAliasesPackage" value="net.wanho.po"/> <property name="configLocation" value="classpath:mybatis.xml"/> </bean>
2.3 生成mapper 的动态代理类
-
用到的类是:MapperScannerConfigurer
-
作用:它将会查找类路径下的映射器并自动将它们创建成MapperFactoryBean
-
MapperFactoryBean:注入XXX.mapper接口和sqlSessionFactory(mybatis中提供的SqlSessionFactory接口,MapperFactoryBean会使用SqlSessionFactory创建SqlSession)这两个属性
<!--自动生成mapper 的动态代理类--> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="net.wanho.mapper"/> <property name="sqlSessionFactoryBeanName" value="sessionFactory"/> </bean>
-
<?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"
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">
<!--引用外部文件-->
<context:property-placeholder location="classpath:db.properties"/>
<!--配置数据源-->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
<property name="driverClassName" value="${jdbc.driver}"/> <!--写这个时 要用到 db.properties-->
<property name="url" value="${jdbc.url}"/> <!--写这个时 要用到 db.properties-->
<property name="username" value="${jdbc.username}"/> <!--写这个时 要用到 db.properties-->
<property name="password" value="${jdbc.password}"/> <!--写这个时 要用到 db.properties-->
</bean>
<!--创建 sqlSessionFactory-->
<bean id="sessionFactory" class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean"> <!--org.mybatis.spring.SqlSessionFactoryBean -->
<!--引入数据源-->
<property name="dataSource" ref="dataSource"/>
<!--配置mapper 映射文件得位置-->
<property name="mapperLocations" value="classpath:net/wanho/mapper/*.xml"/>
<!--类别名-->
<property name="typeAliasesPackage" value="net.wanho.po"/>
<property name="configLocation" value="classpath:mybatis.xml"/>
</bean>
<!--自动生成mapper 得代理-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="net.wanho.mapper"/>
<property name="sqlSessionFactoryBeanName" value="sessionFactory"/>
</bean>
</beans>
理解的图片