#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);
}