MyBatis的Dao层实现方式

MyBatis的Dao层实现

1.1 传统开发方式

1. 编写UserDao接口

public interface UserDao {
List<User> findAll() throws IOException;
}

1.1 传统开发方式

2. 编写UserDaoImpl实现

public class UserDaoImpl implements UserDao{
public List<User> findAll() throws IOException{
InputStreamresourceAsStream= Resources. getResourceAsStream ( "SqlMapConfig.xml" );
SqlSessionFactorysqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSessionsqlSession= sqlSessionFactory.openSe ssion();
List<User> userList= sqlSession.selectList( "userMapper.findAll" );
sqlSession.close();
return userList;
}
}

1.1 传统开发方式

3. 测试传统方式

@Test
public void testTraditionDao() throws IOException{
UserDaouserDao= new UserDaoImpl();
List<User> all = userDao.findAll();
System. out .println(all);
}

1.2 代理开发方式

1. 代理开发方式介绍

采用Mybatis的代理开发方式实现DAO 层的开发,这种方式是我们后面进入企业的主流。
Mapper 接口开发方法只需要程序员编写Mapper 接口(相当于Dao 接口),由Mybatis框架根据接口定义创建接
口的动态代理对象,代理对象的方法体同上边Dao接口实现类方法。
Mapper 接口开发需要遵循以下规范:
1 、Mapper.xml文件中的namespace与mapper接口的全限定名相同
2 、Mapper接口方法名和Mapper.xml中定义的每个statement的id相同
3 、Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql的parameterType的类型相同
4 、Mapper接口方法的输出参数类型和mapper.xml中定义的每个sql的resultType的类型相同

1.2 代理开发方式

2. 编写UserMapper接口

public interface UserDao {
User findById( int id);
}

< mapper namespace="com.itheima.mapper.UserMapper" >
< select id="findById" parameterType="int" resultType="user" >
select * from User where id=#{id}
</ select >
</ mapper >

1.2 代理开发方式

3. 测试代理方式

@Test
public void testProxyDao() throws IOException{
InputStreamresourceAsStream= Resources. getResourceAsStream ( "SqlMapConfig.xml" );
SqlSessionFactorysqlSessionFactory= new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSessionsqlSession= sqlSessionFactory.openSession();
// 获得 MyBatis 框架生成的 UserMapper 接口的实现类
UserMapperuserMapper= sqlSession.getMapper(UserMapper. class );
User user= userMapper.findById( 1 );
System. out .println(user);
sqlSession.close();
}

1.3 知识小结

MyBatis的Dao层实现的两种方式:

 手动对Dao进行实现:传统开发方式
 代理方式对Dao进行实现:
UserMapper userMapper = sqlSession.getMapper(UserMapper. class );

MyBatis的Dao层实现方式相关推荐

  1. MyBatis-学习笔记06【06.使用Mybatis完成DAO层的开发】

    Java后端 学习路线 笔记汇总表[黑马程序员] MyBatis-学习笔记01[01.Mybatis课程介绍及环境搭建][day01] MyBatis-学习笔记02[02.Mybatis入门案例] M ...

  2. Spring整合Mybatis之DAO层、Service层开发

    3. Spring整合Mybatis编程DAO层开发 1. 项目引入相关依赖spring mybatis mysql mybatis-spring druid2. 编写spring.xml整合:spr ...

  3. Mybatis的Dao层实现

    Mybatis的Dao层实现 1.传统方式实现 创建接口com.dao.UserMapper package com.dao;import com.domain.User;import java.io ...

  4. 详解MyBatis的Dao层实现和配置文件深入

    这篇文章主要为大家详细介绍了MyBatis的Dao层实现和配置文件深入,文中的示例代码讲解详细,感兴趣的小伙伴快来跟随小编一起学习一下 目录 [Mybatis的Dao层实现] [传统开发方式] [代理 ...

  5. MyBatis之Dao层实现

    文章目录 1.传统开发方式 2.代理开发方式 我们在了解 MyBatis 的映射文件和配置文件时,所举例的实例都是通过单元测试的方式实现.但在实际开发中,我们需要将 MyBatis 的实现写到 Dao ...

  6. IDEA项目搭建四——使用Mybatis实现Dao层

    一.引入mybatis及mysql的jar包 可以从阿里云上面查找版本,db操作放在dao层所以打开该层的pom.xml文件,找到<dependencies>节点增加两个引入 <de ...

  7. Mybatis 原始Dao层开发

    对Mybatis进行原始Dao层开发的举例子: 定义获取session工具类: package com.langsin.unit;import java.io.InputStream;import o ...

  8. SpringBoot+MyBatis项目Dao层最简单写法

    前言 DAO(Data Access Object) 是数据访问层,说白了就是跟数据库打交道的,而数据库都有哪几种操作呢?没错,就是增删改查.这就意味着Dao层要提供增删改查操作. 不知道大家是怎么写 ...

  9. Mybatis中DAO层接口没有写实现类,Mapper中的方法和DAO接口方法是怎么绑定到一起的...

    参考mybatis入门基础(二)----原始dao的开发和mapper代理开发 其实也就是通过接口名与mapper的id绑定在一起,通过SQL去写实现类,返回数据. 转载于:https://www.c ...

最新文章

  1. R语言可视化分面图、多变量分组多水平t检验、可视化多变量分组多水平分面条形图(faceting bar plot)并添加显著性水平、在标签和绘图上边框之间添加15%的空格、添加抖动数据点
  2. 信号与系统2021春季课程小论文批改
  3. opencv获取摄像头帧率分辨率
  4. 二维数组的查找 java_二维数组中的查找
  5. BSP(BUSINESS SERVER PAGES)完整主机名设置及实现
  6. JZOJ 5662. 【GDOI2018Day1模拟4.17】尺树寸泓
  7. Linux下静态库的创立与使用
  8. Ubuntu 14.04 16.04 安装最新的 docker
  9. asp.net 移除Server, X-Powered-By, 和X-AspNet-Version头
  10. 【NOIP2017Day1T3】【洛谷P3953】逛公园
  11. Origin 2017去除水印的方法
  12. ASP.NET20003人事薪资管理系统
  13. Apache域名跳转----配置rewrite模块
  14. OpenGL Frame Buffer Object (FBO)
  15. 跨考计算机日程记录01
  16. Dreamweaver CS 5 快捷键大全
  17. 移远EC200 EC20 EC600 EC800连接MQTT服务器
  18. Android Studio模拟器的创建和SDK的安装
  19. 不可或缺的ASP.NET内置对象
  20. Linux FFmpeg依赖库编译

热门文章

  1. 07_Numpy渐变图片的生成
  2. 论文阅读-----使用可分离脚印的x射线3D CT向前和向后投影
  3. ShapeAlias
  4. 内心宁静_宁静js的新功能2 16 0
  5. 英语日常用语900句(3)
  6. 上海到深圳的长途搬家认识到了农业民族和航海民族的差异
  7. 解决phpstorm运行很卡问题
  8. 物联网平台由哪些架构组成
  9. ${pageContext.request.contextPath}的作用
  10. 配置文件App.config 生成和调用的两种方式