美文网首页
Spring boot Mybatis依赖注入配置

Spring boot Mybatis依赖注入配置

作者: 寻找无名的特质 | 来源:发表于2022-07-11 05:33 被阅读0次

    使用Spring boot Mybatis进行依赖注入配置时,遇到很多问题,希望在applicationContext.xml中配置所有的依赖注入关系,倒腾了几次,才基本搞清楚:需要配置所有的类型,包括dataSource、sqlSessionFactory,并且需要为Mapper接口进行配置,还需要设置从项目配置文件中读取数据库的配置信息。

    首先是dataSource的配置:

        <context:component-scan base-package="com.example" />
        <bean id="dataSource"
              class="org.springframework.jdbc.datasource.DriverManagerDataSource">
            <property name="driverClassName" value="${spring.datasource.driver-class-name}" />
            <property name="url" value="${spring.datasource.url}" />
            <property name="username" value="${spring.datasource.username}" />
            <property name="password" value="${spring.datasource.password}" />
        </bean>
        <context:property-placeholder location="application.properties" />
    

    这里context是为了从配置文件application.properties中读取数据库的设置。这需要在xml文件中声明相应的名称空间:

    <beans
        xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:p="http://www.springframework.org/schema/p"
        xmlns:context="http://www.springframework.org/schema/context"
        xsi:schemaLocation="http://www.springframework.org/schema/beans 
                                http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
                                http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"
    >
    

    然后是sqlSessionFactory:

        <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
            <property name="dataSource" ref="dataSource" />
        </bean>
    

    接下来是定义的Mapper接口,在代码中的定义如下:

    package com.example;
    
    import cn.jiagoushi.poemgame.poemservice.shared.PoemLine;
    import cn.jiagoushi.poemgame.poemservice.shared.Poet;
    import java.util.List;
    import org.apache.ibatis.annotations.Mapper;
    import org.apache.ibatis.annotations.Param;
    import org.apache.ibatis.annotations.Select;
    
    /**
     *
     * @author zhenl
     */
    @Mapper
    public interface PoemLineMapper {
        @Select("SELECT * FROM POEMLINE")
        List<PoemLine> getAll();
        
        @Select("SELECT * FROM POEMLINE WHERE LineContent=#{line} ")
        PoemLine GetPoemLine(@Param("line") String line);
        
        @Select("SELECT * FROM POEMLINE WHERE PoemId=#{poemId} ")
        List<PoemLine> GetPoemLineByPoemId(@Param("poemId") String poemId) ;
        
        @Select("SELECT * FROM POET WHERE Name=#{name} ")
        Poet GetPoetByName(@Param("name") String name);
    }
    
    

    这个接口在配置中对应的class是"org.mybatis.spring.mapper.MapperFactoryBean" ,定义如下:

        <bean id="mapperbean" class="org.mybatis.spring.mapper.MapperFactoryBean" >
            <property name="mapperInterface" value="com.example.PoemLineMapper" />
            <property name="sqlSessionFactory" ref="sqlSessionFactory" />
        </bean>
    

    接下来就可以定义使用这个接口的bean:

        <bean id="duishicheckanswerbean" class="cn.jiagoushi.poemgame.domain.service.duishi.DuishiCheckAnswer">
            <constructor-arg ref="mypoemservicebean"/>
        </bean>
    

    相关文章

      网友评论

          本文标题:Spring boot Mybatis依赖注入配置

          本文链接:https://www.haomeiwen.com/subject/bqcibrtx.html