目录

  • 1、mybatis环境搭建
  • 2、mybatis dao接口实现
  • 3、动态代理方式,只实现Mapper接口
  • mybatis入门==单表操作demo
mybatis dao层实现1. 实现dao层接口
2. 接口代理方式实现dao代理开发要求:​   Mapper接口开发方法只需要编写Mapper接口(相当于dao接口),由mybatis框架根据接口定义创建接口的动态代理对象,代理对象的方法体和dao方式实现的接口一样。1. mapper.xml 中namespace与mapper接口中全限定名相同
2. mapper接口方法名和mapper.xml中定义的每个statement的id相同
3. mapper接口方法入参类型,和 statement的paramType相同
4. mapper接口返回值类型,和statement的resultType相同

1、mybatis环境搭建

  • user-mapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="cn.bitqian.dao.UserMapper"><!-- resultType 引用别名user --><select id="queryAllUser" resultType="user">select * from users1</select><select id="queryUserByUserId" parameterType="int" resultType="user">select * from users1 where userid = #{id}</select></mapper>
  • mybatis-config.xml 核心配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration><properties resource="jdbc.properties"></properties><!-- user别名 --><typeAliases><typeAlias type="cn.bitqian.entity.User" alias="user"></typeAlias></typeAliases><environments default="development"><environment id="development"><transactionManager type="JDBC"></transactionManager><dataSource type="POOLED"><property name="driver" value="${driver}"/><property name="url" value="${url}"/><property name="username" value="${username}"/><property name="password" value="${password}"/></dataSource></environment></environments><mappers><mapper resource="cn\bitqian\mapper\user-mapper.xml"></mapper></mappers></configuration>

2、mybatis dao接口实现

  • 编写dao接口,同下面mapper接口
package cn.bitqian.dao;import cn.bitqian.entity.User;import java.io.IOException;
import java.util.List;/*** 注意 接口代理开发* 1. 接口类名与mapper中namespace对应* 2. 接口中方法名与statement中的id对应* 3. 接口中方法参数与statement中的parameterType对应* 4. 接口中方法返回值与statement中的resultType类型对应*/
public interface UserMapper {public List<User> queryAllUser() throws IOException;public User queryUserByUserId(int userId);}
  • dao接口实现
package cn.bitqian.dao.impl;import cn.bitqian.dao.UserMapper;
import cn.bitqian.entity.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 java.io.IOException;
import java.io.InputStream;
import java.util.List;/*** 传统实现dao层接口 模板api* @author echo lovely* @date 2020/9/11 9:23*/
public class UserMapperImpl implements UserMapper {@Overridepublic List<User> queryAllUser() throws IOException {InputStream resourceAsStream = Resources.getResourceAsStream("mybatis-config.xml");SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);SqlSession sqlSession = sqlSessionFactory.openSession();// namespace.idList<User> userList = sqlSession.selectList("cn.bitqian.dao.UserMapper.queryAllUser");sqlSession.close();return userList;}@Overridepublic User queryUserByUserId(int userId) {return null;}
}

3、动态代理方式,只实现Mapper接口

  • UserMapper 接口同上
优点分析:1. 只需实现mapper接口,定义对应的业务方法,注意接口名,
方法名,入参,返回的参数和mappers的配置一致2. 无需实现mapper接口,mybatis通过动态代理的方式进行实现了
只需用UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
getMapper api 来创建对象,进行数据库操作
package cn.bitqian.service;import cn.bitqian.dao.UserMapper;
import cn.bitqian.dao.impl.UserMapperImpl;
import cn.bitqian.entity.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 java.io.IOException;
import java.io.InputStream;
import java.util.List;/*** @author echo lovely* @date 2020/9/11 9:29*/
public class DemoTest {public static void main(String[] args) {// 通过实现dao层接口UserMapper userMapper = new UserMapperImpl();try {System.out.println(userMapper.queryAllUser());} catch (IOException e) {e.printStackTrace();}// 编写mapper接口实现查询所有test1();// 根据id查询user对象test2();}private static UserMapper userMapper;static {try {InputStream resourceAsStream = Resources.getResourceAsStream("mybatis-config.xml");SqlSessionFactory build = new SqlSessionFactoryBuilder().build(resourceAsStream);SqlSession sqlSession = build.openSession();// 使用getMapper api拿到接口对象,mybatis会通过动态代理进行底层实现userMapper = sqlSession.getMapper(UserMapper.class);} catch (IOException e) {e.printStackTrace();}}// 通过编写mapper接口实现查询static void test1() {try {List<User> userList = userMapper.queryAllUser();System.out.println(userList);} catch (IOException e) {e.printStackTrace();}}static void test2() {User user = userMapper.queryUserByUserId(1);System.out.println(user);}}

mybatis dao实现 || 接口代理方式实现相关推荐

  1. Mybatis中Mapper动态代理方式

    文章目录 开发规范 Mapper接口开发需要遵循以下规范 Mapper.xml(映射文件) UserMapper(接口文件) 加载UserMapper.xml文件 总结 selectOne和selec ...

  2. Mybatis的CRUD之XML方式以及动态SQL

    MyBatis 接口代理方式实现 Dao 层 传统方式实现 Dao 层,我们既要写接口,还要写实现类.而 MyBatis 框架可以帮助我们省略编写 Dao 层接口实现类的步骤.程序员只需要编写接口,由 ...

  3. MyBatis mapper代理方式

    3. mapper代理方式(程序员只需mapper接口(相当于Dao的接口)) 3.1   思路:1.程序员只需要写mapper接口(相当于Dao接口),mybatis可以自动生成mapper接口实现 ...

  4. [MyBatis]DAO层只写接口,不用写实现类

    团队开发一个项目,由老大架了一个框架,遇到了DAO层不用写接口了,我也是用了2次才记住这个事的,因为自己一直都是习惯于写DAO层的实现类,所以,习惯性的还是写了个实现类.于是遇到错误了. 找不到那个方 ...

  5. 【Java】Mybatis mapper动态代理方式

    前言 我们在使用Mybatis的时候,获取需要执行的SQL语句的时候,都是通过调用xml文件来获取,例如:User user = (User) sqlSession.selectOne("c ...

  6. MyBatis接口代理

    MyBatis接口代理: 采用 Mybatis 的代理开发方式实现 DAO 层的开发,这种方式是目前的主流方式. Mapper 接口开发方法只需要程序员编写Mapper 接口(相当于Dao 接口),由 ...

  7. mybatis--开发Dao--原始dao方式和Mapper代理方式

    Mybatis开发dao Mybatis在项目中主要使用的地方就是开发dao(数据访问层), 有两种方式:原始dao开发方式.mapper代理开发方式(推荐). 需求: 1. 根据用户ID来查询用户信 ...

  8. Mybatis DAO开发--Mapper动态代理开发方式

    Mybatis DAO开发–Mapper动态代理开发方式 第一步:jar包 创建lib目录,引入相应的jar包,本节课用到的案例引入的jar包就是spring整合mybatis要用到的全部jar包. ...

  9. Mybatis的案例和接口代理开发和模板配置

    Mybatis的简单入门案例 一.框架的简介和Mybatis简介 ​ 框架就是一个半成品,在框架的基础上进行开发可以大大的提高开发效率,减少代码量. ​ 框架就相当于地基,使用框架开发就相当于在地基上 ...

最新文章

  1. ​AI 面试“泛滥”的时代,HR该如何甄别真假“AI”?
  2. 更新windows SID工具,对于虚拟机复制很有用
  3. html判断变量,javascript如何判断变量是否为对象?
  4. 您没有足够的全新为该计算机所有用户安装,我用的是admin管理员身份可安装软件弹出你没有足够的权限为该计算机所有用户完成此安装.请以管理员的身份登...
  5. 加州大学惊现神操作!物理教授用数学论文摆脱400美元交通罚单,却惨被网友大反转.........
  6. mysql command line client闪一下消失
  7. Javascript 基础笔记
  8. mui ajax 文件上传,MUI的图片上传和压缩
  9. C++中log的底数理解
  10. python 数据写入json文件时中文显示Unicode编码问题
  11. 驾驭系统 做一个Windows XP的“***”(图)3
  12. 《春夜宴桃李园序》的理解
  13. acs510使用技巧_ACS510-ABB操作说明
  14. 让电脑前后面板音频插孔同时输出声音方法
  15. HIDS反弹shell检测方法
  16. RocketMQ-Retry
  17. strstr 函数介绍
  18. RAID的基本工作模式
  19. MATLAB:图片缩放
  20. git提交代码设置某些文件不可上传

热门文章

  1. 前端学习(1331):mongoose第三方模块
  2. 前端学习(1297):第三方模块gulp
  3. 前端学习(285):移动端简单知识
  4. java学习(95):线程的优先级
  5. USB/UART 串口转LoRa无线传输调试工具 评估套件
  6. STM32项目中一种在线升级/应用升级OTA-IAP设计方案
  7. element-ui中表单验证rules
  8. 函数模板(参考《C++ Templates 英文版第二版》)
  9. [GAN学习系列] 初始GAN
  10. 无法创建接口的实例_什么是接口?