================================================================================================

示例项目:MyBatis_dao_03

首先要在 mybatis-config.xml 中配置 dao 的位置

  • 方法 1:需要将所有 dao 的类一个一个引入```

    
    
  • 方法 2:可以引入一个包下所有的 dao 类```

@Select、@Insert、@Update、@Delete - 执行 DML 语句


@Select@Insert@Update@Delete@SelectKey:用于传入 SQL 语句执行 DML 操作


@Insert("INSERT INTO skill(name, level) VALUES (#{name}, #{level})")boolean save(Skill skill);@Update("UPDATE skill SET name = #{name}, level = #{level} WHERE id = #{id}")boolean update(Skill skill);@Delete("DELETE FROM skill WHERE id = #{id}")boolean remove(Integer id);@Select("SELECT * FROM skill WHERE id = #{id}")Skill get(Integer id); 

完整示例代码

@Param、@Options、@SelectKey、@CacheNamespace


@Param:设置参数名


@Select("SELECT * FROM skill LIMIT #{start}, #{size}")List<Skill> listByStartAndSize(@Param("start") int start,@Param("size") int size); 

@Options:设置其他属性值


@SelectKey(statement = "SELECT LAST_INSERT_ID()",keyProperty = "id", before = false, resultType = Integer.class)@Options(useGeneratedKeys = true, keyProperty = "id")@Insert("INSERT INTO skill(name, level) VALUES (#{name}, #{level})")boolean save(Skill skill); 

@CacheNamespace:对应 mapper 文件中设置 <cache>


@CacheNamespace(flushInterval = 600000, size = 512, readWrite = true)public interface SkillDao {// code...} 

完整示例代码


@Results、@ResultMap、@One、@Many - 多表懒加载


@Results@ResultMap:对应 <resultMap>

@Result:对应 <id><result>

@One 对应 <association>@Many 对应 <collection>


@Select("SELECT * FROM person WHERE id = #{id}")@Results(id = "get", value = {@Result(property = "id", column = "id", id = true),@Result(property = "name", column = "name"),/* 身份证 */@Result(property = "idCard",column = "id",one = @One(fetchType = FetchType.LAZY, select = "com.mj.dao.IdCardDao.getByPerson")),/* 银行卡 */@Result(property = "bankCards",column = "id",many = @Many(fetchType = FetchType.LAZY, select = "com.mj.dao.BankCardDao.listByPerson")),/* 工作 */@Result(property = "jobs",column = "id",many = @Many(fetchType = FetchType.LAZY, select = "com.mj.dao.JobDao.listByPerson"))})Person get(Integer id);@Select("SELECT * FROM person")/* 引用id为get的@Results */@ResultMap("get")List<Person> list();Person testGet(); 

IdCardDao.java 中定义 getByPerson:


public interface IdCardDao {@Select("SELECT * FROM id_card WHERE person_id = #{personId}")IdCard getByPerson(Integer personId);} 

BankCardDao.java 中定义 listByPerson:


public interface BankCardDao {@Select("SELECT * FROM bank_card WHERE person_id = #{personId}")List<BankCard> listByPerson(Integer personId);} 

JobDao.java 中定义 listByPerson:


public interface JobDao {@Select("SELECT j.* FROM job j "+ "JOIN person_job pj ON j.id = pj.job_id AND pj.person_id = #{personId}")### 如何获取免费架构学习资料?![准备两个月,面试五分钟,Java中高级岗面试为何越来越难?](https://img-blog.csdnimg.cn/img_convert/6649d00f5c3ea47024a52d8692aa177d.png)![准备两个月,面试五分钟,Java中高级岗面试为何越来越难?](https://img-blog.csdnimg.cn/img_convert/b92a769559acad53cbaed8b442900cf1.png)![准备两个月,面试五分钟,Java中高级岗面试为何越来越难?](https://img-blog.csdnimg.cn/img_convert/03bdd347f0206b58937f9c0c2e288ac4.png)![准备两个月,面试五分钟,Java中高级岗面试为何越来越难?](https://img-blog.csdnimg.cn/img_convert/76adf9eeb334e3239848133cbe73d7f0.png)![准备两个月,面试五分钟,Java中高级岗面试为何越来越难?](https://img-blog.csdnimg.cn/img_convert/fddb5d689f6351e2b00f8e9cb94f9b41.png)> 由于篇幅限制小编,pdf文档的详解资料太全面,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!**[有需要的程序猿(媛)可以戳这里即可免费获取哦](https://gitee.com/vip204888/java-p7)**628506677492)][外链图片转存中...(img-5vO1CDB5-1628506677494)][外链图片转存中...(img-V8XJ6CkJ-1628506677496)][外链图片转存中...(img-4nBqDtlI-1628506677498)]> 由于篇幅限制小编,pdf文档的详解资料太全面,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!**[有需要的程序猿(媛)可以戳这里即可免费获取哦](https://gitee.com/vip204888/java-p7)**

【Java从0到架构师(3),【好文推荐相关推荐

  1. 【Java从0到架构师,mysql视频教程推荐

    pom.xml pom.xml 是 Maven 项目的核心配置文件,根元素是 project.project 的常用子元素如下表所示: groupId.artifactId.version 组成一个 ...

  2. 【Java从0到架构师(1),Java中高级面试题总结(全面)

    JSP 九大内置对象 MySQL 基础 + 多表查询 [Java从0到架构师]MySQL 基础 MySQL MySQL 的使用步骤 数据库的内部存储细节 GUI 工具 SQL 语句 DDL 语句 DD ...

  3. 【Java从0到架构师】SpringCloud - Sleuth、Zipkin、Config

    SpringCloud 链路追踪组件 Sleuth Zipkin 分布式配置中心 - Config Git + Config 分布式配置中心 Java 从 0 到架构师目录:[Java从0到架构师]学 ...

  4. 【Java从0到架构师】SpringCloud - Hystrix、Zuul

    SpringCloud 基本概念 熔断和降级 服务雪崩效应 服务熔断与降级 - Hystrix SpringBoot 集成 Hystrix 熔断降级服务异常报警通知 重点属性 - 熔断隔离策略.超时时 ...

  5. 【Java从0到架构师】SpringCloud - Eureka、Ribbon、Feign

    SpringCloud 分布式.微服务相关概念 微服务框架构选型 SpringCloud 概述 服务注册与发现 - Eureka 案例项目 Eureka 自我保护机制 微服务调用方式 - Ribbon ...

  6. 【Java从0到架构师】RocketMQ 使用 - 集成 SpringBoot

    RocketMQ 消息中间件 集成 SpringBoot 入门案例 生产消息类型 - 同步.异步.一次性 消费模式 - 集群.广播 延时消息 设置消息标签 设置消息的 Key 自定义属性设置 消息过滤 ...

  7. 【Java从0到架构师】RocketMQ 使用 - 发送消息、接收消息、特殊消息

    RocketMQ 消息中间件 入门案例 NameServer 地址 发送消息 同步发送消息 异步发送消息 一次性发送消息 生产者组.消息封装 接收消息 消费方式:推式消费.拉式消费 消息方式:集群模式 ...

  8. 【Java从0到架构师】RocketMQ 基础 - 应用、核心组件、安装

    RocketMQ 消息中间件 基础知识 消息中间件的应用 异步解耦 削峰填谷 消息分发 RocketMQ 核心组件 RocketMQ 安装 源码安装 修改配置参数 启动 管理控制台安装 测试项目 Ja ...

  9. 【Java从0到架构师】Dubbo 基础 - 设置启动时检查、直接提供者、线程模型、负载均衡、集群容错、服务降级

    Dubbo 分布式 RPC 分布式核心基础 分布式概述 RPC Dubbo Dubbo 入门程序 - XML.注解 部署管理控制台 Dubbo Admin 修改绑定的注册 IP 地址 设置启动时检查 ...

  10. 【Java从0到架构师】分布式框架通信核心基础 - 序列化(JDK、Protobuf)、远程过程调用 RMI

    分布式框架通信核心基础 序列化 JDK 的序列化 JDK 序列化的一些细节 Protobuf 序列化 Protobuf 环境搭建与操作 Protobuf 原理分析 实际数据传输 序列化技术选型 远程过 ...

最新文章

  1. Django ORM那些相关操作
  2. Kafka设计解析(四):Kafka Consumer解析--转
  3. php 5.5.7.tar.gz,编译 php-5.5.26.tar.gz
  4. css关于position的几个值
  5. HUE集成Hbase
  6. seo外链重要性_为什么网站速度对于SEO至关重要?以及如何加快网站速度
  7. 《Reids 设计与实现》第八章 AOF持久化
  8. php任务奖励体系,phpwind7.5完备的积分体系
  9. 程序员面试金典——18.7最长合成字符串
  10. 软件调试第二版卷一硬件基础 pdf_2020全球C++及系统软件技术大会,C++之父领衔...
  11. 数据库入门_查询语句
  12. 分析Faster RCNN中的RPN
  13. [198].打家劫舍
  14. 【SQL】LATERAL VIEW 的用法
  15. 全红婵水花消失术是怎样炼成的,郭晶晶都羡慕她怎么跳得那么好
  16. Mac 不显示未知来源选项的解决办法
  17. VsCode插件之vscode-icons
  18. P72 检查约束与默认值约束
  19. 十九个常用Linux命令,有趣又好玩!
  20. 年中狂欢购,墨刀破冰折扣+终身版回归,快来看!

热门文章

  1. linux升级内核后反复重启,Ubuntu 14.04 升级内核后重启开机黑屏解决
  2. Visual Studio2019 应用程序无法正常启动0xc000007b
  3. c++不允许使用不完整的类型
  4. 卷积神经网络中的各种池化操作
  5. retinaface验证
  6. 实时人脸关键点源码推荐
  7. vs2015中文乱码
  8. pytorch 冻结层操作 + 学习率超参数设置
  9. win10 安装pydot
  10. ios 静态库冲突的解决办法