1.映射文件xxxMapper.xml语法:
<mapper namespace="XXX.XXX.XXX.mapper.PersonMapper">
<select id="getPersonList" …
……
</select>
</mapper>
1.1namespace:命名空间:
namespace必须给某个接口同名;
1.2 id:命名空间中唯一的标识符
接口中的方法与映射文件中的sql语句id一一对应;
1.3 parameterType: 参数类型
传入SQL语句的参数类型
1.4 resultType:返回值类型
SQL语句返回值类型的完整类名或别名
实操:
1.创建工程,导入依赖
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.1.36</version>
</dependency>
2.根据数据库表中的表映射创建一个实体类
public class Person {
private Integer id;
private String name;
private String nickname;
private Integer age;
public Person() {
}
public Person(Integer id, String name, String nickname, Integer age) {
this.id = id;
this.name = name;
this.nickname = nickname;
this.age = age;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
3. 创建PersonMapper接口
import java.util.List;
public interface PersonMapper {
public List<Person> getpersonList();
}
4.在PersonMapper.xml映射文件中写sql语句,这里就相当于jdbc里的dao实现类,大大避免了jdbc手动设置参数和结果集的代码;
<?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="xxx.xxx.mapper.PersonMapper">
<select id="getPersonList" resultType="xxx.xxx.pojo.Person">
select * from Person
</select>
</mapper>
5.创建测试类测试查询结果
@Test
public void getPersonListTest() throws IOException {
String config="mybatis-config.xml";
InputStream in = Resources.getResourceAsStream(config);
SqlSessionFactoryBuilder Builder = new SqlSessionFactoryBuilder();
SqlSessionFactory build = Builder.build(in);
SqlSession sqlSession = build.openSession();
List<Person> list = sqlSession.getMapper(PersonMapper.class).getPersonList();
for(Person p:list){
System.out.println("name: "+p.getName()+", age: "+p.getAge()+", nickname: "+p.getNickname());
}
sqlSession.close();
}