文章目录
一、思路:
在遵循规范(如下对应关系)的前提下编写mapper接口文件,mybatis自动生成mapper接口实现类代理对象
对应关系:
mapper接口 | mapper.xml |
---|---|
接口地址 | namespace |
方法名 | statement的id |
方法输入参数类型 | parameterType类型 |
方法返回值类型 | resultType类型 |
二、实现步骤:
1. po类创建:
public class User {
private int id;
private String username;
private String sex;
private Date birthday;
private String address;
}
2. mapper.xml
<mapper namespace="cn.itcast.mybatis.mapper.UserMapper">
<!-- 根据id获取用户信息 -->
<select id="findByUserId" parameterType="int" resultType="cn.itcast.mybatis.po.User">
select * from user where id = #{id}
</select>
</mapper>
3. SqlMapConfig.xml配置
<mappers>
<mapper resource="Sqlmap/User.xml" />
</mappers>
4. mapper.java
public interface UserMapper {
public User findByUserId(int id);
}
5. 测试代码
public class MapperTest {
private SqlSessionFactory sqlSessionFactory;
@Before
public void setUp() throws IOException{
String resource="SqlMapConfig.xml";
InputStream inputStream= Resources.getResourceAsStream(resource);
sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
}
@Test
public void test() {
SqlSession sqlSession =sqlSessionFactory.openSession();
UserMapper userMapper=sqlSession.getMapper(UserMapper.class);
User user=userMapper.findByUserId(1);
System.out.println(user);
sqlSession.close();
}
}
三、问题说明:
1. selectOne或selectList代理对象的选择
selectOne:mapper方法返回单个对象
selectList:mapper方法返回集合对象
2. mapper接口方法参数只能有一个是否限制系统开发
系统框架中,dao层的代码是被业务层公用的,可以使用包装类型的pojo满足不同的业务方法的需求
注意:持久层方法的参数可以包装类型、map…,service方法中建议不要使用包装类型(不利于业务层的可扩展)