入门
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); } } }