_Mapper代理的方式完成sql数据库查询
-
定义SQL映射文件同名的Mapper接口,并且将Mapper接口和SQL映射文件放置在同一目录下
-
设置SQL映射文件的namespace属性为Mapper接口全限定名
-
在Mapper接口中定义方法,方法名就是SQL映射文件中sql语句的id,并保持参数和返回值类型一致
-
编码:
- 通过SqlSession 的getMapper方法获取Mapper接口的代理对象
- 调用对应方法完成sql的执行
- 细节:如果Mapper接口名称和SQL映射文件名称相同,并且在同一目录下,则可以使用包扫描的方式简化SQL映射文件的加载
-
在UserMapper.xml文件中
-
在test文件中
-
package com.atguigudb.mybatis.test; import com.atguigudb.mybatis.mapper.UserMapper; import com.atguigudb.mybatis.pojo.User; import org.apache.ibatis.annotations.Mapper; 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; import java.util.List; public class Mybatis_Test { /* @Test public void testMyBatis() { // 加载核心配置文件 try { InputStream is = Resources.getResourceAsStream("mybatis-config.xml"); SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder(); SqlSessionFactory sf = sqlSessionFactoryBuilder.build(is); SqlSession sqlSession = sf.openSession(); // 获取mapper接口对象 UserMapper mapper = sqlSession.getMapper(UserMapper.class); // 测试功能 int result = mapper.insertUser(); sqlSession.commit(); System.out.println("result:" + result); } catch (IOException e) { e.printStackTrace(); } } */ /* @Test public void testMyBatis() { // 获取InputStream对象 InputStream is = null; try { is = Resources.getResourceAsStream("mybatis-config.xml"); // 获取SqlSessionFactoryBuilder对象 SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder(); // 获取SqlSessionFactory对象 SqlSessionFactory sf = sqlSessionFactoryBuilder.build(is); // 获取SqlSession对象 SqlSession sqlSession = sf.openSession(); // 获取mapper接口 UserMapper mapper = sqlSession.getMapper(UserMapper.class); // 实现sql语句 int result = mapper.deleteUser(); // 提交事务 sqlSession.commit(); // 返回结果 System.out.println("result:" + result); } catch (IOException e) { e.printStackTrace(); }finally { try { is.close(); } catch (IOException e) { e.printStackTrace(); } } } */ /* @Test public void testMyBatis() { // 获取InputStream对象 InputStream is = null; try { is = Resources.getResourceAsStream("mybatis-config.xml"); // 获取SqlSessionFactoryBuilder对象 SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder(); // 获取SqlSession对象 SqlSessionFactory sf = sqlSessionFactoryBuilder.build(is); // 获取SqlSession对象 SqlSession sqlSession = sf.openSession(true); // 获取mapper接口 UserMapper mapper = sqlSession.getMapper(UserMapper.class); // 实现sql语句 int result = mapper.updateUser(); // 输出返回结果 System.out.println("result:" + result); } catch (IOException e) { e.printStackTrace(); }finally { try { is.close(); } catch (IOException e) { e.printStackTrace(); } } } */ /* // MyBatis框架sql查询操作 @Test public void testMyBatis() { // 获取InputStream 对象 InputStream is = null; try { is = Resources.getResourceAsStream("mybatis-config.xml"); // 获取SqlSessionFactoryBuilder SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder(); // 获取SqlSessionFactory 对象 SqlSessionFactory sf = sqlSessionFactoryBuilder.build(is); // 获取sqlSession 对象 SqlSession sqlSession = sf.openSession(true); // 执行sql语句 List<User> users = sqlSession.selectList("com.atguigudb.mybatis.mapper.UserMapper.selectUser"); // 输出结果 System.out.println(users); } catch (IOException e) { e.printStackTrace(); }finally { try { is.close(); } catch (IOException e) { e.printStackTrace(); } } } */ // Mapper代理的方式查询数据库 @Test public void testMyBatis() { // InputStream is = null; try { is = Resources.getResourceAsStream("mybatis-config.xml"); // 获取SqlSessionFactoryBuilder对象 SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder(); // 获取SqlSessionFactory对象 SqlSessionFactory sf = sqlSessionFactoryBuilder.build(is); // 获取SqlSession对象 SqlSession sqlSession = sf.openSession(true); // 获取Mapper接口 UserMapper mapper = sqlSession.getMapper(UserMapper.class); // 执行sql语句 List<User> users = mapper.selectUser(); // 输出执行结果 System.out.println("result:" + users); } catch (IOException e) { e.printStackTrace(); } finally { try { is.close(); } catch (IOException e) { e.printStackTrace(); } } } } ============================================= result:[User{id=1, name='小明', age=19, address='北京'}, User{id=2, name='夏红', age=21, address='上海'}, User{id=3, name='小军', age=18, address='武汉'}, User{id=4, name='小王', age=17, address='北京'}, User{id=5, name='张三', age=17, address='北京'}] Process finished with exit code 0