spring 集成mybatis的配置文件

253 阅读1分钟

练习用到的项目目录结构

image.png

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: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
       https://www.springframework.org/schema/context/spring-context.xsd">

   <!--
   把数据库的配置信息 写在一个独立的文件 编译修改数据库的配置内容
   spring知道jdbc.properties文件的位置
   -->
    <context:property-placeholder location="classpath:jdbc.properties"/>

    <!--声明数据源DataSource 连接数据库-->
    <bean id="myDataSource" class="com.alibaba.druid.pool.DruidDataSource"
     init-method="init" destroy-method="close">
        <!--set注入给DruidDataSource提供连接数据库信息-->
        <!--
         使用属性配置文件中的数据 语法${key}
        -->
    <property name="url" value="${jdbc.url}" />
    <property name="username" value="${jdbc.username}" />
    <property name="password" value="${jdbc.password}" />
    <property name="maxActive" value="${jdbc.max}"/>
    </bean>

     <!--声明的是mybatis中提供的SqlSessionFactoryBean类 这个类内部创建SqlSessionFactory的-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">

        <!--set注入 把数据库连接池付给了DataSource属性-->
        <property name="dataSource" ref="myDataSource"/>
        <!--
        mybatis 主配置文件的位置
        configLocation属性是Resource类型 读取配置文件
        他的属性 使用value 指定文件的路径 使用classpath :表示文件的位置
        -->
        <property name="configLocation" value="classpath:mybatis.xml"/>
    </bean>

    <!--创建dao对象 使用SqlSession的getMapper(StudentDao.class)
        MapperScannerConfigurer: 在内部使用getMapper()生成没个到接口的代理对象
    -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <!--指定SqlSessionFactory对象的id-->
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
        <!--指定包名 包名是dao接口所在的包名
          MapperScannerConfigure会扫描这个包中所有的接口  把每个接口都执行
          一次getMapper()方法 得到每个接口的dao对象
          创建好的dao对象放入到spring的容器中
        -->
        <property name="basePackage" value="com.bjpowernode.dao"/>
    </bean>

    <!--声明service-->
    <bean id="studentService" class="com.bjpowernode.service.impl.StudentServiceImpl">

        <property name="studentDao" ref="studentDao"/>
    </bean>
</beans>

mybatis.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>

    <!--settings:控制mybatis全局行为-->
    <settings>
        <!--设置mybatis输出日志-->
        <setting name="logImpl" value="STDOUT_LOGGING"/>
    </settings>


    <!--设置别名-->
    <typeAliases>
        <!--name :实体类所在的包名-->
        <package name="com.bjpowernode.domain"/>
    </typeAliases>
    <!-- sql mapper(sql映射文件)的位置-->
    <mappers>

        <!--
          name:是包名  这个包中所有的mapper.xml 一次都能加载
          
        -->
        <package name="com.bjpowernode.dao"/>
        
    </mappers>
</configuration>

StudentDao.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.bjpowernode.dao.StudentDao">

   <insert id="insertStudent">
       insert into student values(#{id},#{name},#{email},#{age})
   </insert>
    <select id="selectStudent " resultType="com.bjpowernode.domain.Student">
       select id,name,email,age  from student order by id desc
    </select>
</mapper>

jdbc.properties

这样做可以方便以后管理数据库的连接信息

jdbc.url=jdbc:mysql://localhost:3306/springdb
jdbc.username=root
jdbc.password=123456
jdbc.max=30