MyBatis sql映射器 Mapper

时间:2022-04-24 05:47:24

入门

  MyBatis基于动态代理机制,让我们无需再编写Dao的实现。

  传统Dao接口,现在名称统一以Mapper结尾,还有我们映射器配置文件要和映射器在同一个包.

 

   IDeptDao---->DeptMapper.java---DeptMapper.xml(namespace直接写DeptMapper.java的全限定名)

 

 

1.创建个User类(首先得有个数据库中的表是User,并且还有对应的字段)

public class User {
    private Long id;
    private String name;

   get和set和tostring此处省略。。。。(get和set和tostring是要的,太长了没复制 
}

2.个上面的类建个接口UserMapper

import java.util.List;
/**
* 查询数据库中所有数据
* @return
*/
public interface UserMapper { 
  List
<User> queryAll();
}

 

3.建个UserMapper.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">
<!-- orm框架 sql的映射
namespace:命名空间  namespace路径  id值
          namespace怎么配置 包名.接口名   queryAll
-->
<mapper namespace="cn.itsource._02mapper.UserMapper">
<!-- 查询 queryAll()
resultType 返回类型
注意下面id的值必须和你接口中的方法名一致,如果有其他方法也要一一对应,否则会报错找不到方法
     下面resultType的值就是你执行了下面sql语句返回的数据类型

-->
<select id="queryAll" resultType="User"> select * from t_user </select> 

</mapper>

 

 

 

 

4.写一个测试类进行测试

import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import util.MyBataisUtil;

import java.util.List;

public class UserImplTest {

    @Test
    public void querAll() {
        //MyBataisUtil.MYBATAIS.getSqlSession();通过单例模式封装好sqlSession
        SqlSession sqlSession = MyBataisUtil.MYBATAIS.getSqlSession();
        //sqlSession.getMapper(要动态代理的接口)返回动态代理类
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        //用动态代理类来调用查询全部数据的方法
        List<User> users = mapper.queryAll();
        for (User user : users) {
            System.out.println(user);
        }
    }
}