在传统 dao层开发的时候有一些地方是重复工作的,这时候 MyBatis 给我们提供了另一种高效开发的方式,那就是Mapper代理,但是使用Mapper代理开发应该遵循Mybatis 的规范。
首先搭建MyBatis项目:https://blog.csdn.net/young_1004/article/details/81987259
使用mapper代理的方式开发dao层要遵循一些规范:
1、Mapper接口必须和映射文件在同一个目录下
2、mapper.xml中namespace指定为mapper接口的全限定名
3、mapper.xml中statement的id就是mapper.java中方法名
4、mapper.xml中statement的parameterType和mapper.java中方法输入参数类型一致
5、mapper.xml中statement的resultType和mapper.java中方法返回值类型一致.
1.UserMapper
package com.ma.mybatis.mapper;
import com.ma.mybatis.pojo.User;
public interface UserMapper {
public void addUser(User user);
public void deleteUser(Integer id);
}
2.配置sqlConfig.xml
<mappers>
<package name="com.ma.mybatis.mapper"></package>
</mappers>
3.测试
package com.ma.mybatis.mapper;
import com.ma.mybatis.pojo.User;
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.Test;
import java.io.IOException;
import java.io.InputStream;
public class UserDaoTest {
@Test
public void addUser() throws IOException {
InputStream cof = Resources.getResourceAsStream("sqlMapConfig.xml");
//创建会话工厂
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(cof);
SqlSession sqlSession = sqlSessionFactory.openSession(true);
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User user = new User();
user.setAge(22);
user.setName("小红");
mapper.addUser(user);
sqlSession.close();
}
}
4.效果
注意:maven不认识mapper.xml解决方案
pom.xml
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>