02-测试@Mapper注解

测试@Mapper注解

1.创建一个接口,不加@Mapper接口,自己创建其实现类

public interface GoodsDao {
    public List<Goods> findGoods();
}

2.GoodsDao.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">

<mapper namespace="com.cy.pj.goods.pojo.dao.GoodsDao">
    <select id="findGoods" resultType="com.cy.pj.goods.pojo.Goods">
         select * from tb_goods where name="suchao"
     </select>
</mapper>

3.创建实现类,获取一个SQLSession对象

@Respository
public class GoodsDaoImpl implements GoodsDao {
   @Autowired
    private SqlSession sqlSession;
    @Override
    public List<Goods> findGoods() {
       第一种:return sqlSession.selectList("com.cy.pj.goods.pojo.dao.GoodsDao.findGoods");
        第二种:return sqlSession.getMapper(GoodsDao.class).findGoods();此方式会转化为第一种代码

4.创建测试类测试,查看结果(成功查询出结果)

@SpringBootTest
public class GoodsDaoTests {
    @Autowired
    private GoodsDao goodsDao;
    @Test
    public void testFindGoods(){
        List<Goods> list=goodsDao.findGoods();
        for(Goods g:list){
            System.out.println(g);
        }
    }

}

5.当我们加上@Mapper让此接口交给框架管理,并创建其实现类

@Mapper
public interface GoodsDao {
    public List<Goods> findGoods();
}

6.创建测试类,运行代码结果(成功查询出结果)

@SpringBootTest
public class GoodsDaoTests {
    @Autowired
    private GoodsDao goodsDao;
    @Test
    public void testFindGoods(){
        List<Goods> list=goodsDao.findGoods();
        for(Goods g:list){
            System.out.println(g);
        }
    }

}

7.以上两种方式一个加上了@Mapper注解框架会自动为我们创建一个实现类,另一个我们没有加@Mapper注解不由框架创建实现类,当我们加上了@Mapper注解同时自己也创建出一个实现类,框架会注入谁呢?

这个时候经测试得出,框架会优先注入它自己创建的实现类,而不是我们自己创建实现类,如果需要注入我们自己的实现类,需要用@Qualifier注解指定即可,@Mapper注解底层也会创建一个实现类并调用一个SQLsession对象,来进行对数据库的会话管理

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值