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>

    <!-- 配置mybatis运行环境 -->
    <environments default="development">
        <environment id="development">
            <!-- 使用JDBC的事务管理 -->
            <transactionManager type="JDBC" />
            <dataSource type="POOLED">
                <property name="driver" value="${driver}" />
                <!-- 连接数据库的URL -->
                <property name="url" value="${url}" />
                <property name="username" value="${username}" />
                <property name="password" value="${password}" />
            </dataSource>
        </environment>
    </environments>
    <!-- 将mapper文件加入到配置文件中 -->
    <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<Score> 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<Score> resultList = scoreMapper2.selectAllScore();
}

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

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

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

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

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

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

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

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

 

posted @ 2022-04-10 17:27  binbin_cloud  阅读(303)  评论(0编辑  收藏  举报