Mybatis框架学习——03手动编写Dao的实现类

Mybatis03

手动编写Dao的实现类

开发过程中不推荐手动的实现dao接口的实现类

1.配置部分

配置文件和映射的配置不需要改变

2.编写dao的实现类

mybatis框架的session对象提供了一些执行查询的方法,所以dao的实现构建需要传入factory用于获取session对象

package com.yang.dao.impl;

import com.yang.beans.User;
import com.yang.dao.UserDao;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;

import java.util.List;

public class UserDaoImpl implements UserDao {
    private  SqlSessionFactory factory;
    //带SqlSessionFactory 参数的构造函数
    public UserDaoImpl(SqlSessionFactory factory){
        this.factory=factory;
    }

    public List<User> foundAllUsers() {
        //通过factory获取session对象

        SqlSession session = factory.openSession();
        //通过session调用方法执行查询
        //需要通过配置文件读取sql语句 定位是通过配置文件中的 namespace 属性和id组合在一起共同定位到具体dao的某个方法
        List<User> users = session.selectList("com.yang.dao.UserDao.foundAllUsers");
        session.close();

        return users;
    }
}
session.selectList("com.yang.dao.UserDao.foundAllUsers");  //其中的参数是配置文件xml中的值  更具属性namespace和id的值来匹配
<mapper namespace="com.yang.dao.UserDao" >                              


    <select id="foundAllUsers" resultType="com.yang.beans.User">

        Select * from user

    </select>

</mapper>

3.测试

import com.yang.beans.User;
import com.yang.dao.UserDao;
import com.yang.dao.impl.UserDaoImpl;
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 org.junit.Test;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

public class test01 {
    @Test
    /**
     * 手动实现dao的实现类测试
     */
    public void first() {
        //1.读取配置文件
        InputStream in= null;
        try {
            in = Resources.getResourceAsStream("SqlMapConfig.xml");
        } catch (IOException e) {
            e.printStackTrace();
        }
        //2.创建SqlSessionFactory工厂
        SqlSessionFactoryBuilder builder =new SqlSessionFactoryBuilder();
        SqlSessionFactory factory=builder.build(in);
        //3.使用工厂生产SqlSession对象
        SqlSession session = factory.openSession();
//        System.out.println(session);
        //4.创建dao的实现类
        UserDao userDao=new UserDaoImpl(factory);
        //5.通过对象调用方法
//        System.out.println(userDao);
        List<User> users = userDao.foundAllUsers();

        for (User user: users
             ) {
            System.out.println(user);
        }

        //6.释放资源

        try {
            in.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }


}

4.结果

 

 2019-09-07

 

posted @ 2019-09-07 14:49  杨小顺  阅读(79)  评论(0)    收藏  举报