mybatis映射文件与接口绑定


映射文件 ScoreMapper.xml

完整路径: mybatis.ScoreMapper.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="mybatis_orm.ScoreMapper">
    <select resultType="mybatis_orm.Score" id = "selectAllScore">
        select * from score
    select>
xml>

配置文件 mybatis-config.xml

完整路径: mybatis.mybatis-config.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="mybatis/database.properties"/>
    <settings>
        <setting name="logImpl" value="LOG4J" />
    settings>

    
    <environments default="development">
        <environment id="development">
            
            <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="mybatis/ScoreMapper.xml"/>
        
    mappers>
    
configuration>

要绑定的接口文件 ScoreMapper2.java

完整路径: mybatis_orm.ScoreMapper2.java

package mybatis_orm;

import java.util.List;public interface ScoreMapper2 {
    
    public List selectAllScore();
}

测试代码

public class Application {
    public static void main(String[] args) throws IOException {
        InputStream config = Resources.getResourceAsStream("mybatis/mybatis-config.xml");
        SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(config);
        SqlSession session = ssf.openSession();
        ScoreMapper2 scoreMapper2 = session.getMapper(ScoreMapper2.class);
     List resultList = scoreMapper2.selectAllScore();
}

以上就完成了映射文件和xml文件的映射,只要注意一下几点

1 在配置文件中,绑定的接口不需要加入mappers, 不然会报已处在的错误: mybatis_orm.ScoreMapper is already known to the MapperRegistry

就是说不需要写  ,package是用来扫描注解接口所在的包。mybatis是不允许重复扫描已存在的文件。

2 绑定接口不一定就要和映射文件xml同层目录,映射文件的namespace写为绑定接口的完整路径,此完整路径为bin下的包路径. 这样就完成了映射文件和接口的绑定

3 select.update等标签的id应与接口的方法名相同,参数对应(mybatis传递参数的方式三种,基本数据类型,javabean,map),返回类型对应

如果对于单个参数,或者多个相同类型参数会采用基本数据类型。因为基本数据类型只能定义一个,不能定义多个。所以一般不采用。

map由于可读性不高,所以也不采用。

使用POJO的方式是最常用的。