代码
@RunWith(SpringRunner.class)
@SpringBootTest
public class MybatisTest {
@Autowired
private DataSource dataSource;
@Autowired
private MemberPOMapper memberPOMapper;
private Logger log=LoggerFactory.getLogger(MybatisTest.class);
@Test
public void testMapper(){
BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
String source="123123";
String encode = passwordEncoder.encode(source);
MemberPO memberPO = new MemberPO(null, "jack", encode,
"杰克", "jack@qq.com", 1, 1, "杰克",
"123123", 2);
memberPOMapper.insert(memberPO);
}
}
遇到的问题
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.atguigu.crowd.mapper.MemberPOMapper.insert
看了一下我的application.yml是没有问题的
server:
port: 2000
spring:
application:
name: atguigu-crowd-mysql
datasource:
name: mydb
type: com.alibaba.druid.pool.DruidDataSource
url: jdbc:mysql://127.0.0.1:3306/project_crowd?serverTimezone=UTC
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
eureka:
client:
service-url:
defaultZone: http://localhost:1000/eureka
mybatis:
mapper-locations: classpath*:/mybatis/mapper/*Mapper.xml
logging:
level:
com.atguigu.crowd.mapper: debug
com.atguigu.crowd.test: debug
原因
排查后发现xml并没有像接口那样按照文件层级编译,而是被当做了一个文件夹名为mybatis.mapper的文件夹处理。
操作
重新建mybatis包和mapper包,记住要分开建包,然后删除之前的target,重新运行,然后就成功了。