Users类
public interface UsersMapper {
int insert(Users users);
}
映射文件:UsersMapper.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.bjpowernode.mapper.UsersMapper">
<insert id="insert" parameterType="users" >
insert into users values (#{userid}, #{username}, #{upass})
</insert>
</mapper>
服务层接口:UsersService
public interface UsersService {
//增加用户
int insert(Users users);
}
服务层实现类:UsersServiceImpl
@Service
public class UsersServiceImpl implements UsersService {
@Autowired
UsersMapper usersMapper;
@Autowired
AccountsService accountsService;
@Override
public int insert(Users users) {
int num = usersMapper.insert(users);
System.out.println("用户增加成功!num="+num);
return num;
}
}
测试:
@Test
public void testUsers(){
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext_service.xml");
UsersService uService = (UsersService) ac.getBean("usersServiceImpl");
int num = uService.insert(new Users(101,"张三","123"));
System.out.println(num);
}
报错:
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.bjpowernode.mapper.UsersMapper.insert
问题:
src/main/java目录下的mapper资源文件(UsersMapper.xml)没有被扫描到。
解决方案:
在pom.xml文件中配置如下内容:
<build>
<!-- 目的是把src/main/java目录中的xml文件包含到输出结果中。输出到classes目录中 -->
<resources>
<resource>
<directory>src/main/java</directory>
<!-- 所在的目录 -->
<includes>
<!-- 包括目录下的.properties,.xml 文件都会扫描到 -->
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<!-- 所在的目录 -->
<includes>
<!-- 包括目录下的.properties,.xml 文件都会扫描到 -->
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
</build>
修改完后,用Maven clean→compile,再次测试:
成功!