mybatis使用总结

mybatis使用总结

1.使用方法

1.1. dao层接口

@Repository
public interface TestDao {
    List<Person> selectPeople();
}

1.2. dao层实现类

public class TestDaoImpl implements TestDao {
    public SqlSession sqlSession;

    public TestDaoImpl(SqlSession sqlSession) {
        this.sqlSession = sqlSession;
    }

    @Override
    public List<Person> selectPeople() {
        return sqlSession.selectList("TestDao.selectPeople");
    }
}

1.3. mapper.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="TestDao">
    <select id="selectPeople" resultType="top.xuqian.dto.Person">
        select * from people;
    </select>
</mapper>

1.4. 测试

public class TestDaotest {
    public TestDao testDao;
    public SqlSession sqlSession;
    @Before
    public void setUp(){
        try {
//            InputStream is = new FileInputStream("mybatis.xml");
//            根据xml构建sqlSessionFactoryBuilder
//            SqlSessionFactoryBuilder ssfb = new SqlSessionFactoryBuilder();
//            构建sqlSessionFactory
//            SqlSessionFactory ssf = ssfb.build(is);
//            spring结合mybatis后,可直接获取SqlSeesionFacetory
            ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext("spring/spring-mybatis.xml");
            SqlSessionFactory ssf = (SqlSessionFactory)ac.getBean("sqlSessionFactory");
            SqlSession sqlSession = ssf.openSession();
            this.testDao = new TestDaoImpl(sqlSession);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @Test
    public void testSelect(){
        List<Person> list = testDao.selectPeople();
        System.out.println(list);
    }
}

2.mybatis动态代理

实际使用中,我们并不会写dao层的接口实现类,因为mybatis提供了动态代理,只需修改之前的mapper.xml,删除接口实现类 TestDaoImpl.java
2.1 修改后的mapper.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">
<!--使用动态代理,命名空间必须使用dao接口的全路径-->
<mapper namespace="top.xuqian.dao.TestDao">
    <select id="selectPeople" resultType="top.xuqian.dto.Person">
        select * from people;
    </select>
</mapper>

2.2 修改后的测试用例

public class TestDaotest {
    public TestDao testDao;
    public SqlSession sqlSession;
    @Before
    public void setUp(){
        try {
//            InputStream is = new FileInputStream("mybatis.xml");
//            根据xml构建sqlSessionFactoryBuilder
//            SqlSessionFactoryBuilder ssfb = new SqlSessionFactoryBuilder();
//            构建sqlSessionFactory
//            SqlSessionFactory ssf = ssfb.build(is);
//            spring结合mybatis后,可直接获取SqlSeesionFacetory
            ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext("spring/spring-mybatis.xml");
            SqlSessionFactory ssf = (SqlSessionFactory)ac.getBean("sqlSessionFactory");
            SqlSession sqlSession = ssf.openSession();
//            this.testDao = new TestDaoImpl(sqlSession);
            this.testDao = sqlSession.getMapper(TestDao.class);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @Test
    public void testSelect(){
        List<Person> list = testDao.selectPeople();
        System.out.println(list);
    }
}

2.3 动态代理总结

  1. mapper.xml的命名空间必须是dao层接口的全路径
  2. sql的id必须与方法名一致
  3. resultType要与方法返回值一致(有可能不一样,List< T >则是T类型)
  4. parameterType要与方法入参数一致(有可能不一样,List< T >则是T类型)

参考 https://blog.csdn.net/hellozpc/article/details/80878563#1JDBC_10

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值