<?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="userMapper"> <select id="findById" resultType="user" parameterType="int"> select * from user where id=#{id} </select> <select id="findAll" resultType="user"> select * from user </select> </mapper>
public interface UserDao { public List<User> findAll() throws IOException; public User findById(int id) throws IOException; }
public class UserDaoImpl implements UserDao { public List<User> findAll() throws IOException { InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml"); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream); SqlSession sqlSession = sqlSessionFactory.openSession(); List<User> userList = sqlSession.selectList("userMapper.findAll"); return userList; } public User findById(int id) throws IOException { InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml"); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream); SqlSession sqlSession = sqlSessionFactory.openSession(); User user = sqlSession.selectOne("userMapper.findById",id); return user; } }
public class ServiceDemo { public static void main(String[] args) throws IOException { // 创建dao层对象,当前dao层实现是手动编写的 UserDao userDao = new UserDaoImpl(); List<User> all = userDao.findAll(); System.out.println(all); } }
采用MyBatis的代理开发方式实现DAO层开发,才是企业开发的主流。
Mapper接口开发方式只需要编写Mapper接口(Dao接口),由MyBatis框架根据接口定义创建接口的动态代理对象,代理对象的方法体同上边Dao接口实现类方法。
Mapper接口开发需要遵循以下规则:
> Mapper.xml文件中的 namespace 与mapper 接口的全限定名 相同。
> Mapper 接口方法名 和Mapper.xml中定义的每个 statement的id 相同。
> Mapper 接口方法的输入参数类型 和Mapper.xml中定义的每个 sql的parameterType的类型 相同。
> Mapper 接口方法的输出参数类型 和Mapper.xml中定义的每个 sql的resultType的类型 相同。
<mapper namespace="com.bearpx.spring.mybatis.dao.UserDao">
@Test public void testProxyDao() throws IOException { // 获得核心配置文件 InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml"); // 获得session工厂对象 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream); // 获得session 会话对象 SqlSession sqlSession = sqlSessionFactory.openSession();
// 获得 MyBatis 框架生成的 UserMapper 接口的实现类 UserDao userDao = sqlSession.getMapper(UserDao.class); // 执行操作 参数: namespace + id User user = userDao.findById(1); System.out.println(user); // 释放资源 sqlSession.close(); }
public class ServiceDemo { public static void main(String[] args) throws IOException { // 获得核心配置文件 InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml"); // 获得session工厂对象 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream); // 获得session 会话对象 SqlSession sqlSession = sqlSessionFactory.openSession(); UserDao userDao = sqlSession.getMapper(UserDao.class); // 执行操作 参数: namespace+id User user = userDao.findById(1); System.out.println(user); // 释放资源 sqlSession.close(); } }
原文:https://www.cnblogs.com/kingdomer/p/14027518.html