使用mapper接口改进持久层开发————6

来源:互联网 发布:华为手机数据恢复中心 编辑:程序博客网 时间:2024/06/13 23:31

mapper 接口开发:
第一步:定义mapper.xml
第二步:定义mapper 接口

public interface UserMapper {//增删改查的方法    public User selectUserById(int id) throws Exception;    public List<User> selectUserList() throws Exception;    public void insertUser(User user) throws Exception;    public void updateUser(User user) throws Exception;    public void deleteUser(int id) throws Exception;}

第三步:修改namespaceMapper.xml映射文件中的namepace改为如下:

//是mapper接口的地址<mapper namespace="cn.UserMapper">

第四步:通过mapper接口调用statement
public class UserMapperTest extends TestCase {

 private SqlSessionFactory sqlSessionFactory;    protected void setUp() throws Exception {       //mybatis配置文件       String resource = "sqlMapConfig.xml";       InputStream inputStream = Resources.getResourceAsStream(resource);       //使用SqlSessionFactoryBuilder创建sessionFactory       sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);    }    public void testSelectUserById() throws Exception {       //获取session       SqlSession session = sqlSessionFactory.openSession();       //获取mapper接口实例       UserMapper userMapper = session.getMapper(UserMapper.class);       //通过mapper接口调用statement       User user = userMapper.selectUserById(1);       System.out.println(user);       //关闭session       session.close();    }
public void testSelectUserList() throws Exception {       //获取session       SqlSession session = sqlSessionFactory.openSession();       //获取mapper接口实例       UserMapper userMapper = session.getMapper(UserMapper.class);       //通过mapper接口调用statement       List<User> list = userMapper.selectUserList();       System.out.println(list);       //关闭session       session.close();    }public void testInsertUser() throws Exception {       //获取session       SqlSession session = sqlSessionFactory.openSession();       //获限mapper接口实例       UserMapper userMapper = session.getMapper(UserMapper.class);       //要添加的数据       User user = new User();       user.setUsername("张三");       user.setBirthday(new Date());       user.setSex("1");       user.setAddress("北京市");       user.setDetail("好同志");       user.setScore(99.8f);       //通过mapper接口添加用户       userMapper.insertUser(user);       //提交       session.commit();       //关闭session       session.close();    }    public void testUpdateUser() throws Exception {       //获取session       SqlSession session = sqlSessionFactory.openSession();       //获限mapper接口实例       UserMapper userMapper = session.getMapper(UserMapper.class);       //要更新的数据       User user = new User();       user.setId(7);       user.setUsername("李四");       user.setBirthday(new Date());       user.setSex("1");       user.setAddress("北京市");       user.setDetail("好同志");       user.setScore(99.8f);       //通过mapper接口调用statement       userMapper.updateUser(user);       //提交       session.commit();       //关闭session       session.close();    }    public void testDeleteUser() throws Exception {       //获取session       SqlSession session = sqlSessionFactory.openSession();       //获限mapper接口实例       UserMapper userMapper = session.getMapper(UserMapper.class);       //通过mapper接口删除用户       userMapper.deleteUser(6);       //提交       session.commit();       //关闭session       session.close();    }}

session.getMapper(UserMapper.class)生成一个代理对象作为UserMapper的接口实现对象。

总结:
使用mapper接口不用写接口实现类即可完成数据库操作,简单方便,此方法为官方推荐方法。
使用mapper接口调用必须遵守如下四个规范:
1、 Mapper接口方法名和mapper.xml中定义的每个sql的id相同
2、 Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql 的parameterType的类型相同
3、 Mapper接口方法的输出参数类型和mapper.xml中定义的每个sql的resultType的类型相同
4、 Mapper.xml文件中的namespace即是mapper接口的类路径。

至此,mybatis的mapper包括mapper.xml和mapper接口两种文件。

原创粉丝点击