LD is tigger forever,CG are not brothers forever, throw the pot and shine forever.
Modesty is not false, solid is not naive, treacherous but not deceitful, stay with good people, and stay away from poor people.
talk is cheap, show others the code and KPI, Keep progress,make a better result.
Survive during the day and develop at night。
目录
概 述
下载mybatis 源码问题:
测试问题:
自动注入问题:
@Test
void fullyPopulatedSubject() {
try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
final AutoConstructorMapper mapper = sqlSession.getMapper(AutoConstructorMapper.class);
final Object subject = mapper.getSubject(1);
assertNotNull(subject);
}
}
@Test
void fullyPopulatedSubject() {
try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
final AutoConstructorMapper mapper = sqlSession.getMapper(AutoConstructorMapper.class);
final Object subject = mapper.getSubject(1);
assertNotNull(subject);
}
}
调试后,可以看到:
2.获取自动构造Mapper 的注入
3.实例化代理对象查询数据库记录
debug 视图:
二。基本对象
@Test
void primitiveSubjects() {
try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
final AutoConstructorMapper mapper = sqlSession.getMapper(AutoConstructorMapper.class);
assertThrows(PersistenceException.class, mapper::getSubjects);
}
}
同理,对应的badObject:
@Test
void badSubject() {
try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
final AutoConstructorMapper mapper = sqlSession.getMapper(AutoConstructorMapper.class);
assertThrows(PersistenceException.class, mapper::getBadSubjects);
}
}
三。查询出对应的extensive_subject
INSERT INTO extensive_subject
VALUES
(1, 1, 'a', 1, 1, 1, 1.0, 1, 'a', 'AVALUE', 'ACLOB', 'aaaaaabbbbbb', CURRENT_TIMESTAMP),
(2, 2, 'b', 2, 2, 2, 2.0, 2, 'b', 'BVALUE', 'BCLOB', '010101010101', CURRENT_TIMESTAMP),
(3, 3, 'c', 3, 3, 3, 3.0, 3, 'c', 'CVALUE', 'CCLOB', '777d010078da', CURRENT_TIMESTAMP);
验证集合的大小:
@Test
void extensiveSubject() {
try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
final AutoConstructorMapper mapper = sqlSession.getMapper(AutoConstructorMapper.class);
verifySubjects(mapper.getExtensiveSubjects());
}
}
private void verifySubjects(final List<?> subjects) {
assertNotNull(subjects);
Assertions.assertThat(subjects.size()).isEqualTo(3);
}
验证通过:
小结
参考资料和推荐阅读
1.链接: link.