### Cause: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: org.apache.ibatis.builder.BuilderException: Error creating document instance. Cause: com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: 3 字节的 UTF-8 序列的字节 3 无效
出现UTF-8 字节无效 可能是因为XML文件不兼容中文(备注也不可以),把中文删掉就可以了。
如何用IDEA创建第一个MyBatis
1、
2、配置pom.xml
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<!-- https://mvnrepository.com/artifact/log4j/log4j -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>
<build>
<resources>
<resource>
<!--加载以下目录下的插件-->
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
<include>**/*.tld</include>
<include>**/*.jsp</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
<include>**/*.tld</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>
3、在main文件夹里边创建一个resource文件夹 然后Resources Root
4、在resource文件夹里创建xml文件
<?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/mybatis" />
<property name="username" value="root" />
<property name="password" value="970320" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="mapper/user.xml"></mapper>
</mappers>
</configuration>
5、写一个pojo实体类
```java
package pojo;
public class User {
private int id;
private String name;
private String password;
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 String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public User(int id, String name, String password) {
this.id = id;
this.name = name;
this.password = password;
}
public User() {
}
}
6、创建mapper包里边写一个xml文件和一个接口
7、在接口里编写方法,和配置同级xml文件
接口
public interface UserMapper {
List<User> listuser();
List<User> listuser2(int id);
void adduser(HashMap<String,String> map);
void deluser(User user);
void upduser(User user);
}
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="mapper.UserMapper">
<select id="listuser" resultType="pojo.User">
SELECT * FROM user;
</select>
<select id="listuser2" resultType="pojo.User" parameterType="int">
SELECT name,password FROM user WHERE #{name}
</select>
<insert id="adduser" parameterType="hashmap">
INSERT INTO user (name,password) VALUES (#{name},#{pwd})
</insert>
<delete id="deluser" parameterType="pojo.User">
DELETE FROM user WHERE name=#{name}
</delete>
<update id="upduser" parameterType="pojo.User">
UPDATE user SET name =#{name},password=#{password} WHERE id =#{id}
</update>
</mapper>
8、测试
package com;
import mapper.UserMapper;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Before;
import org.junit.Test;
import pojo.User;
import java.io.IOException;
import java.io.Reader;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class test {
SqlSession session = null;
@Before
public void Test0() throws IOException {
String conf = "mybatis-config.xml";
Reader reader = Resources.getResourceAsReader(conf);
//创建SessionFactory对象
SqlSessionFactoryBuilder sfb =new SqlSessionFactoryBuilder();
SqlSessionFactory sf = sfb.build(reader);
//创建Session
session = sf.openSession();
}
@Test
public void test2(){
UserMapper mapper = session.getMapper(UserMapper.class);
List<User> listuser = mapper.listuser();
System.out.println(listuser);
for (int i=0;i<listuser.size();i++){
System.out.println(listuser.get(i).getId());
System.out.println(listuser.get(i).getName());
System.out.println(listuser.get(i).getPassword());
}
int id =1;
List<User> users = mapper.listuser2(id);
System.out.println(users);
}
@Test
public void test3(){
UserMapper mapper = session.getMapper(UserMapper.class);
HashMap<String,String> map = new HashMap<String, String>();
String name = "zzz";
String pwd = "z123";
map.put("name",name);
map.put("pwd",pwd);
mapper.adduser(map);
System.out.println("添加成功");
session.commit();
}
@Test
public void test4(){
UserMapper mapper = session.getMapper(UserMapper.class);
String name ="zzz";
User user = new User();
user.setName(name);
mapper.deluser(user);
System.out.println("删除成功");
session.commit();
}
@Test
public void test5(){
UserMapper mapper = session.getMapper(UserMapper.class);
User user = new User(3,"abc","abc123");
mapper.upduser(user);
session.commit();
System.out.println("更新成功");
}
}