记idea maven整合spring mybatis途中踩过的几个坑以及流程

本文记录了在IDEA中整合Spring和MyBatis时遇到的坑,包括项目结构中java和resources文件夹类型设置的重要性,以及配置文件如applicationContext.xml、dispatcher-servlet.xml、Mybatis-config.xml和mapper文件的位置。流程涵盖配置数据源、sqlSessionFactory、包扫描器,接口类与mapper文件的对应,以及在controller或service层的注入使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、项目结构里面,文件夹的类型
项目里面文件夹的结构
这其中java文件夹要设置成source root类型,resources要设置成resources root 类型,各种类型文件的区别可以看这里:https://blog.youkuaiyun.com/xiaohei_neko/article/details/79353605
这一步如果类型设置不对的话,idea会自动给你添加一些不对的包名,最后还得手动改过来……
附上后续整个的结构:
在这里插入图片描述

2、各种配置文件该放的地方
applicationContext.xml:放在WEB-INF/resources目录下。
dispatcher-servlet.xml:放在WEB-INF/resources目录下。(该文件为spring配置文件)
Mybatis-config.xml:放在src根目录下。(该文件为总的mybatis配置文件)
filetest.xml:放在resources目录下。(这是mapper映射文件,这些映射文件放在mapper包中好像也行)

3、流程:
首先,在spring配置文件里配置mybatis的数据源、sqlSessionFactory和包扫描器。

<!-- 配置mybatis, 绑定druid-->
    <!--com.alibaba.druid.pool.DruidDataSource-->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
        <!-- 基本属性 url、user、password -->
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/project"/>
        <property name="username" value="root"/>
        <property name="password" value="123456"/>

    </bean>
    <!-- 配置sqlSessionFactory -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!-- 数据库连接池 -->
        <property name="dataSource" ref="dataSource"/>
        <!-- 加载Mybatis全局配置文件 -->
        <property name="configLocation" value="Mybatis-config.xml"/>

    </bean>
    <!-- 配置mapper扫描器 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <!-- 扫描包路径,如果需要扫描多个包中间用半角逗号隔开 -->
        <property name="basePackage" value="mapper"></property>
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
    </bean>

然后,配置mapper文件以及接口类,这两个文件合在一起成为实际意义上的dao层。
这一步记得mapper文件的namespace要是接口类的全类名。

<!-建议是一个实体写一个xml文件-->
<mapper namespace="mapper.AttachMapper">

然后接口类的方法也要对应mapper文件的方法。

<!--通过namespace.id来定位该sql-->
    <select id="queryAttachByNumber" resultType="mapper.Attach" parameterType="int">
        select * from filetest where number = #{number}<!--这里的id只是占位符,写成什么都无所谓-->
    </select>

最后在controller或者service层用注解注入mapper接口类就可以使用啦。

@Autowired
    private AttachMapper attachmapper;

(这里的attachmapper就可以直接作为后续使用了)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值