MyBatis_入门案例_hehe.employment.over.29.3

29.6 MyBatis_入门案例

package com.xww.test;

import com.xww.dao.IUserDao;
import com.xww.domain.User;
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.InputStream;
import java.util.List;

/**
 * mybatis的入门案例
 */
public class MybatisTest {
    
    

    /**
     * 入门案例
     * @param args
     */
    public static void main(String[] args)throws Exception {
    
    
        //1.读取配置文件
        InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
        //2.创建SqlSessionFactory工厂
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
        SqlSessionFactory factory = builder.build(in);
        //3.使用工厂生产SqlSession对象
        SqlSession session = factory.openSession();
        //4.使用SqlSession创建Dao接口的代理对象
        IUserDao userDao = session.getMapper(IUserDao.class);
        //5.使用代理对象执行方法
        List<User> users = userDao.findAll();
        for(User user : users){
    
    
            System.out.println(user);
        }
        //6.释放资源
        session.close();
        in.close();
    }
}

  • 分析
    在这里插入图片描述

29.7 MyBatis_注解开发和编写 dao 实现类的方式

29.7.1 注解开发

  • 删除 IUserDao.xml 映射文件
  • 在 IUserDao 接口中的查询所有方法上加入注解
package com.xww.dao;

import com.xww.domain.User;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 *
 * 用户的持久层接口
 */
public interface IUserDao {
    
    

    /**
     * 查询所有操作
     * @return
     */
    @Select("select * from user")
    List<User> findAll();
}

  • Mybais 的主配置文件中,读取配置文件的方式需要改成如下
    <!-- 指定映射配置文件的位置,映射配置文件指的是每个dao独立的配置文件
        如果是用注解来配置的话,此处应该使用class属性指定被注解的dao全限定类名
    -->
    <mappers>
        <mapper class="com.xww.dao.IUserDao"/>
    </mappers>

29.7.2 dao 实现类

  • 给 dao 接口添加实现类,如下:
package com.xww.dao.impl;

import com.xww.dao.IUserDao;
import com.xww.domain.User;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;

import java.util.List;

public class UserDaoImpl implements IUserDao {
    
    

    private SqlSessionFactory factory;

    public UserDaoImpl(SqlSessionFactory  factory){
    
    
        this.factory = factory;
    }

    public List<User> findAll(){
    
    
        //1.使用工厂创建SqlSession对象
        SqlSession session = factory.openSession();
        //2.使用session执行查询所有方法
        List<User> users = session.selectList("com.xww.dao.IUserDao.findAll");
        session.close();
        //3.返回查询结果
        return users;
    }
}

  • 测试类:
package com.xww.test;

import com.xww.dao.IUserDao;
import com.xww.dao.impl.UserDaoImpl;
import com.xww.domain.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

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

public class MybatisTest {
    
    

    /**
     * 入门案例
     * @param args
     */
    public static void main(String[] args)throws Exception {
    
    
        //1.读取配置文件
        InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
        //2.创建SqlSessionFactory工厂
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
        SqlSessionFactory factory = builder.build(in);
        //3.使用工厂创建dao对象
        IUserDao userDao = new UserDaoImpl(factory);
        //4.使用代理对象执行方法
        List<User> users = userDao.findAll();
        for(User user : users){
    
    
            System.out.println(user);
        }
        //5.释放资源
        in.close();
    }
}

猜你喜欢

转载自blog.csdn.net/qq_44686266/article/details/113990883