.Mapper接口方法的输入参数类型要与映射文件中定义每个sql的参数类型相同
sssisi前面一节,我们学习了mybits的快速入门,这一节我们来谈谈mybatis的代理开发
而要完成代理开发,必须满足四个条件
一.Mapper接口.xml文件中的namespace与mapper接口的权限名相同
package com.cheng.mapper.impl;
<mapper namespace="com.cheng.mapper.impl.UserMapper">
二..Mapper接口方法名要与映射文件中定义的每个statement的id相同
public User findOne(int id);
<select id="findOne"
三..Mapper接口方法的输入参数类型要与映射文件中定义每个sql的参数类型相同
parameterType="int">
select * from user where id=#{id}
</select>
public User findOne(int id);
四..Mapper接口方法的输出参数类型要与映射文件中定义每个sql的结果类型相同
UserMapper接口的findone方法的返回类型是User
resultType="com.cheng.domain.User"
User类
package com.cheng.domain;
public class User {
private int id;
private String username;
private String password;
private String emails;
private String phone;
public User() {
}
public User(int id, String username, String password, String emails, String phone) {
this.id = id;
this.username = username;
this.password = password;
this.emails = emails;
this.phone = phone;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getEmails() {
return emails;
}
public void setEmails(String emails) {
this.emails = emails;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
", email='" + emails + '\'' +
", phone='" + phone + '\'' +
'}';
}
}
Mapper接口
package com.cheng.mapper.impl;
import com.cheng.domain.User;
import java.util.List;
public interface UserMapper {
public User findOne(int id);
}
映射文件
<?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.cheng.mapper.impl.UserMapper">
<select id="findOne" resultType="com.cheng.domain.User" parameterType="int">
select * from user where id=#{id}
</select>
</mapper>
测试
public class MyBatisPlus {
@Test
public void test() throws IOException {
InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession sqlSession = sqlSessionFactory.openSession(true);
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User one = mapper.findOne(2010214);
System.out.println(one);
sqlSession.close();
}
}