https://blog.csdn.net/techbirds_bao/article/details/9233599

上链接为一个不错的Mybatis进阶博客

当你把握时间,时间与你为伍.

将上一个简单的小案例完善,加入了更多的数据库SQL mapper映射

------------ 其后还有继续更新,如动态mapper映射,动态SQL.(不知道是否为同一个意思,总之mapper就是为了将sql语句给数据库做交互)

多功能的primary3案例源码  <<注意获取SqlSession有错误,应该是获取SqlSessionFactory,再每个方法获取session.事务相关

加入了一些新的方法,小工具似的方法如将mapper.xml中的某段sql语句包装起来使用.(在该语句重复多次情况下)

以及当方法含有多个参数时,mapper.xml中的sql语句可以使用#{ 0 }, #{ 1 }这样的下标位置获取.

以及动态SQL,当有哪些数据时,或者满足给定条件时,再执行sql语句的where条件.

还有传入数组以及list查询符合这些id的foreach.以及自定义类型的foreach.

具体测试类如下:

package com.ykmimi.dao;

import java.util.List;
import java.util.Map; import com.ykmimi.entity.Student; public interface IStudentDao {
//插入数据库新的学生实例
void insertStudent(Student student);
//插入数据库新的学生实例并包含id默认设置
void insertStudentCacheId(Student student); //删除学生元组通过学生id
void deleteStudentById(int id);
//更新学生信息(设置更改内容到student对象,并最后设置要修改的学生id)
void updateStudent(Student student); //查询所有学生实例 返回List
List<Student> selectAllStudents();
//查询单个学生实例
Student selectStudentById(int id);
//查询多个学生实例根据模糊查询name
List<Student> selectStudentsByName(String name); //多条件查询,根据名字以及年龄多少 参数map
List<Student> selectStudentsByCondition(Map<String, Object> map); //多条件查询,根据名字和分数, 参数多个
List<Student> selectStudentsByConditionB(String name,double score); //动态SQL
List<Student> selectStudentsByConditionC(Student student);
//根据switch,case类型查询,符合其中一个when则就不执行其他的条件
List<Student> selectStudentsByChoose(Student student);
//根据数组查询
List<Student> selectStudentsByForeach(int[] ids);
//根据list查询
List<Student> selectStudentsByForeach2(List<Integer> ids);
//根据泛型自定义的list查询
List<Student> selectStudentsByForeach3(List<Student> ids);
//包装起来的sql语句片段
List<Student> selectStudentsBySqlFragment(List<Student> ids);
}

通过此段学习,得知MyBatis就是对SQL的封装.而其功能语句也是固定化的.(某些)

案例包中的查询均通过.

下篇将整合一下最近的MyBatis学习.做个小段总结.

3Q

-------------------------------------------------------------------------

Dao的实现类其实并没有干什么实质性的工作,它仅仅就是通过SqlSession的相关API定位到映射文件 mapper 中相应的
id的SQL语句,真正对DB进行操作的工作其实是由框架通过 mapper 中的 SQL 完成的.
MyBatis框架抛开了 Dao 的实现类, 直接定位到映射文件 mapper 中的相应 SQL 语句, 对DB进行操作.
这种对Dao的实现方式称为 Mapper 的动态代理方式.
Mapper动态代理方式无需程序员实现Dao接口,接口是由MyBatis结合映射文件自动生成的动态代理实现的.
------------------------------------------------------------------------

MyBatis小案例完善增强的更多相关文章

  1. Mybatis案例升级版——小案例大道理

    纯Mybatis案例升级版——小案例大道理 前言: 这几天看了一本书<原则>,在上面看到了一句话叫“每个人都把自己眼界的局限当成世界的局限”,大学生是

  2. Mybatis(综合案例)

    MyBatis本是apache的一个开源项目iBatis,2010年这个项目有Apache software foundation 迁移到了Google code,并改名MyBatis.2013年11 ...

  3. MyBatis入门案例、增删改查

    一.MyBatis入门案例: ①:引入jar包 ②:创建实体类 Dept,并进行封装 ③ 在Src下创建大配置mybatis-config.xml <?xml version="1.0 ...

  4. MyBatis入门案例 增删改查

    一.MyBatis入门案例: ①:引入jar包 ②:创建实体类 Dept,并进行封装 ③ 在Src下创建大配置mybatis-config.xml <?xml version="1.0 ...

  5. 8天入门docker系列 —— 第五天 使用aspnetcore小案例熟悉容器互联和docker-compose一键部署

    这一篇继续完善webnotebook,如果你读过上一篇的内容,你应该知道怎么去挂载webnotebook日志和容器的远程访问,但是这些还远不够,webnotebook 总要和一些数据库打交道吧,比如说 ...

  6. node.js(小案例)_实现学生信息增删改

    一.前言 本节内容主要对小案例做一个总结: 1.如何开始搭建小项目 2.路由设计 3.模块应用 4.项目源码以及实现过程github地址: 项目演示如下: 二.主要内容 1.项目的关键性js源码: 项 ...

  7. 一个ssm综合小案例-商品订单管理----写在前面

    学习了这么久,一直都是零零散散的,没有把知识串联起来综合运用一番 比如拦截器,全局异常处理,json 交互,RESTful 等,这些常见技术必须要掌握 接下来呢,我就打算通过这么一个综合案例把这段时间 ...

  8. VUE小案例--简易计算器

    这个小案例主要时练习v-model的使用,功能并不完善 <!DOCTYPE html> <html lang="zh-CN"> <head> & ...

  9. Mybatis入门案例中设计模式的简单分析

    Talk is cheap, show me the code! public class TestMybatis { public static void main(String[] args) t ...

随机推荐

  1. Express框架(http服务器 + 路由)

    index.js 使用express框架搭建http服务器,和实现路由功能. var express = require('express'); var app = express(); // 主页输 ...

  2. OC开发_Storyboard——多线程、UIScrollView

    一.多线程 1.主队列:处理多点触控和所有UI操作(不能阻塞.主要同步更新UI) dispatch_queue_t mainQueue = dispatchg_get_main_queue(); // ...

  3. 微信小程序 --- 设置页面的标题

    第一种方式:修改 page.json文件 { "navigationBarTitleText": "豆瓣 - 电影" } 第二种方式:使用 JS 修改: wx. ...

  4. LISTAGG

    LISTAGG(measure_expr [, 'delimiter']) WITHIN GROUP (order_by_clause) [OVER query_partition_clause] S ...

  5. html5新属性contenteditable 对于那些不可编辑的标签,现在都可以编辑了

    contenteditable = true 表示该html标签的内容可以编辑,对于那些不可编辑的标签,现在都可以编辑了.

  6. vue - 准备知识

    一.知识 http://www.cnblogs.com/majj/https://www.cnblogs.com/majj/category/1216624.html 阮一峰 es6http://es ...

  7. 寻找最小(最大)的k个数

    题目描述:输入n个整数,输出其中最小的k个元素. 例如:输入1,2,3,4,5,6,7,8这8个数字,则最小的4个数字为1,2,3,4. 思路1:最容易想到的方法:先对这个序列从小到大排序,然后输出前 ...

  8. [原创]chromium源码阅读-进程间通信IPC.消息的接收与应答

    chromium源码阅读-进程间通信IPC.消息的接收与应答   chromium源码阅读-进程间通信IPC.消息的接收与应答 介绍 chromium进程间通信在win32下是通过命名管道的方式实现的 ...

  9. git学习------> 解决Gitlab 版本升级之后,发送 merge request 出现 http 500 的返回码错误

    今天有同事在Gitlab上发送 Merge Request的时候,直接出现如下所示的界面,提示http 500,服务器内部出错. 一.错误描述 1.1 创建新的 Merge Request 1.2 填 ...

  10. mysql 数据操作 单表查询 where约束 工作模式

    select name,age from employee where id >7; 1.首先先找到表   from employee 2.表存在 mysql拿着约束条件  去表里 看依次匹配数 ...