美文网首页
MyBatis接口绑定方案以及多参数传递

MyBatis接口绑定方案以及多参数传递

作者: kanaSki | 来源:发表于2019-08-05 21:11 被阅读0次

    实现步骤:创建一个接口
    1.接口的包名和接口名与mapper.xml中<mapper>标签的namespace相同
    2.接口中方法名和mapper.xml标签的id属性相同
    3.在mybatis.xml中使用<package>标签进行扫描接口和mapper.xml

    框架结构:


    框架结构

    mybatis.xml文件:(此处mappers标签内需要使用package标签,该标签的name属性表名接口及mapper文件所在包)

    <?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>
        <settings>
            <setting name="logImpl" value="LOG4J"/>
        </settings>
        <typeAliases>
            <typeAlias type="com.pojo.Emp" alias="emp"/>
        </typeAliases>
        <environments default="default">
            <environment id="default">
                <transactionManager type="JDBC"></transactionManager>
                <dataSource type="POOLED">
                    <property name="driver" value="oracle.jdbc.driver.OracleDriver"></property>
                    <property name="url" value="jdbc:oracle:thin:@192.168.74.3:1521:orcl"></property>
                    <property name="username" value="scott"></property>
                    <property name="password" value="tiger"></property>
                </dataSource>
            </environment>
        </environments>
        <mappers>
            <!--mapper接口及xml文件所在包-->
            <package name="com.mapper"></package>
        </mappers>
    </configuration>
    

    mapper.xml文件:(此处注意namespace属性需要与接口吻合)

    <?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.mapper.EmpMapper">
        <select id="selAll" resultType="emp">
            select * from emp
        </select>
        <!--多参数时,不需要写parameterType,因为接口上已经有参数声明,如果想改变#{}内的内容,则需要接口的相应参数名前加上@param(内容名称)注解即可。该操作实质是将参数转换为map,其中@param(key)-->
        <select id="selByEnameAndEmpNo" resultType="emp">
            select * from emp where ename=#{0} and #{1}
        </select>
    </mapper>
    

    Test类:

    package com;
    
    import com.pojo.Emp;
    import org.apache.ibatis.io.Resources;
    import org.apache.ibatis.session.SqlSession;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    
    import java.io.IOException;
    import java.util.List;
    
    public class Test {
        public static void main(String[] args) throws IOException {
            SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis.xml"));
            SqlSession sqlSession = factory.openSession();
            List<Emp> emps = sqlSession.selectList("com.mapper.EmpMapper.selAll");
            for (int i = 0; i < emps.size(); i++) {
                System.out.println(emps.get(i));
            }
        }
    }
    

    Test类也可以用如下方式:

    package com;
    
    import com.mapper.EmpMapper;
    import com.pojo.Emp;
    import org.apache.ibatis.io.Resources;
    import org.apache.ibatis.session.SqlSession;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    
    import java.io.IOException;
    import java.util.List;
    
    public class Test {
        public static void main(String[] args) throws IOException {
            SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis.xml"));
            SqlSession sqlSession = factory.openSession();
            EmpMapper mapper = sqlSession.getMapper(EmpMapper.class);
            List<Emp> emps = mapper.selAll();
            for (int i = 0; i < emps.size(); i++) {
                System.out.println(emps.get(i));
            }
        }
    }
    

    相关文章

      网友评论

          本文标题:MyBatis接口绑定方案以及多参数传递

          本文链接:https://www.haomeiwen.com/subject/foyvdctx.html