【mybatis】开发中遇到的一些问题小结

#1-> 配置文件MyBatisConfg.xml

在配置文件中的<configuration>里的标签有严格的标签摆放顺序,如果顺序不对,会报错。

例如,我之前把<settings>标签放在了<properties>标签之前,系统报错如下

 <configuration>标签里的严格顺序应该是:

properties -> settings -> typeAliases -> typeHandlers -> objectFactory -> objectWrapperFactory -> reflectorFactory -> plugins -> environments -> databaseIdProvider -> mappers

-> MyBatisConfg.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>
    <!--引入外部配置文件-->
    <properties resource="mysqlconfg.properties"/>
    <!--日志配置-->
    <settings>
        <setting name="logImpl" value="LOG4J"/>
    </settings>
    <!--配置mysql的环境-->
    <environments default="mysql">
        <environment id="mysql">
            <!--配置事务类型-->
            <transactionManager type="JDBC"/>
            <!--配置连接池/数据源类型-->
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>
    <!--配置映射关系-->
    <mappers>
        <mapper resource="com/yy/dao/IUserMapper.xml"/>
    </mappers>
</configuration>

-> mysqlconfg.properties

注意MySQL6以后的driver写法和5之前的有点区别。

driver = com.mysql.cj.jdbc.Driver
url = jdbc:mysql://localhost/maven_db?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=false
username = root
password = 1007

#2-> 映射文件IUserMapper.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.yy.dao.IUserMapper">

    <select id="findAll" resultType="com.yy.domain.User">
        select * from user;
    </select>

</mapper>

需要注意的是这里的resultType必须指定全限定类名,不能写别称,之前的项目可以写别称是因为添加了扫描机制。

#3-> DAO层的mapper接口里有多个参数

原始的DAO接口文件IndicatorMapper.java如下

package com.indicator.dao;

import com.indicator.domain.IndicatorRecord;

import java.util.List;

public interface IndicatorMapper {

    public List<IndicatorRecord> getAllList(String sale_channel, String date);

}

直接运行,会报错 Cause: org.apache.ibatis.binding.BindingException: Parameter 'sale_channel' not found. Available parameters are [arg1, arg0, param1, param2] 

解决方法

接口文件里,有多个参数的时候用@Param注解的方式传参

package com.indicator.dao;

import com.indicator.domain.IndicatorRecord;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface IndicatorMapper {

    // 分管总队伍指标查询
    // 多个参数的时候用@Param注解的方式传参
    public List<IndicatorRecord> getAllList(@Param("sale_channel")  String sale_channel,
                                            @Param("date")  String date);

}

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值