13mybatis的DAO层开发

传统开发方式:

  1. 编写UserDao/UserMapper接口
  2. 编写UserDao/UserMapper实现类,里面有各种增删改查方法
  3. service层创建UserDao/UserMapper,并调用其中方法

Mybatis的开发方式:代理开发方式(Mapper接口开发)

  • 编写Mapper接口(相当于Dao接口,也在dao包中)
  • Mapper接口的名、方法、参数、返回值等要与映射文件中的一致。

Mapper接口开发需要遵循的规范:

  1. 映射文件中的namespace和mapper接口的全限定名相同
  2. mapper接口中的方法名要与映射文件中的执行语句id相同
  3. mapper接口中的方法参数要与映射文件中的parameterType的类型相同
  4. mapper接口中的方法返回值类型要与映射文件中的resultType的类型相同

代码实现:

  1. 定义dao包中的接口

    public interface UserMapper {
        public List<User> findAll() throws IOException;
    }
    
  2. 定义映射文件userMapper.xml(注意其中的namespace/resultType/id)

    <?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.dao.UserMapper">
        <select id="findAll" resultType="com.domain.User">
            select * from user
        </select>
    </mapper>
    
  3. 定义配置文件sqlMapConfig.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配置文件-->
        <properties resource="jdbc.properties"/>
    <!--    数据源环境-->
        <environments default="developement">
            <environment id="developement">
                <transactionManager type="JDBC"/>
                <dataSource type="POOLED">
                    <property name="driver" value="${jdbc.driver}"/>
                    <property name="url" value="${jdbc.url}"/>
                    <property name="username" value="${jdbc.username}"/>
                    <property name="password" value="${jdbc.password}"/>
                </dataSource>
            </environment>
        </environments>
    <!--    加载映射文件-->
        <mappers>
            <mapper resource="UserMapper.xml"/>
        </mappers>
    
    </configuration>
    
  4. 测试

    InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");
    SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(resourceAsStream);
    SqlSession sqlSession = factory.openSession();
    // 这里和原来的不一样
    // 这里使用了getMapper方法
    UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    List<User> all = mapper.findAll();
    System.out.println(all);
    
原文地址:https://www.cnblogs.com/mingriyingying/p/13639599.html