1.用maven的web模板生成了项目,然后添加了依赖这里应该没有问题
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.demo</groupId>
<artifactId>SeverDemo</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>SeverDemo Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.0</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.11</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>6.0.2</version>
</dependency>
</dependencies>
<build>
<finalName>SeverDemo</finalName>
</build>
</project>
2.然后配置了mybatis-config这里应该也没啥问题
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatisdemo"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com.demo/mapper/StudentMapper.xml"></mapper>
</mappers>
</configuration>
3.设置好实体类和映射文件好像也没啥问题
package com.demo.bean;
import java.util.Date;
/**
* Created by 73196 on 2016/5/2.
*/
public class Student {
private int id;
private String name;
private Date birthday;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
}
<?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.demo.bean.Student">
<select id="selectStudent" resultType="com.demo.bean.Student" databaseId="mysql">
SELECT * FROM student WHERE ID=#{id}
</select>
</mapper>
1.在映射文件中他先给我来个这个
暂时先没有管
2.运行,这错误
org.apache.ibatis.exceptions.PersistenceException:
### Error querying database. Cause: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for com.demo.mapper.StudentMapper.selectStudent
### Cause: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for com.demo.mapper.StudentMapper.selectStudent
at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:150)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:141)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectOne(DefaultSqlSession.java:77)
at com.demo.APP.main(APP.java:22)
Caused by: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for com.demo.mapper.StudentMapper.selectStudent
at org.apache.ibatis.session.Configuration$StrictMap.get(Configuration.java:853)
at org.apache.ibatis.session.Configuration.getMappedStatement(Configuration.java:686)
at org.apache.ibatis.session.Configuration.getMappedStatement(Configuration.java:679)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:147)
... 3 more
于是就点开源码看
get参数得到了个null抛出错误,然后我有看是哪个参数?
没错,是id?
整个项目在此 http://git.oschina.net/slgxmh/SeverDemo-Learn
소스코드를 캡쳐해 보니 다음과 같은 문제점이 발견되었습니다
1. XML 파일 매핑을 위한 네임스페이스는 com.demo.mapper.StudentMapper여야 합니다
2. XML 파일 매핑을 위한 가장 좋은 디렉터리는 com/demo/입니다. 리소스 Mapper는 나중에 Mapper 인터페이스를 작성할 때 더 이상 모범 사례에 부합하지 않습니다. 경로를 수정할 때 mybatis-config.xml의 경로도 동시에 변경하는 것을 잊지 마세요.
3. 매핑 xml 파일에서 select 문의
속성dbId="mysql"을 제거해야 합니다.
mybatis-config.xml에 제공된 데이터베이스IdProvider가 없으므로 mybatis는 알 수 없습니다. 현재 데이터베이스 ID 및 선택 문이 데이터베이스 ID를 제한하므로 매핑 문을 찾을 수 없습니다.
위 3가지 문제를 로컬에서 해결한 후 오류가 사라졌습니다.
작성하신 구성 파일에는 문제가 없는 것 같은데요? 리소스 폴더가 클래스 경로에 있지 않습니까? ? ?