MyBatis小案例完善增强
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小案例完善增强的更多相关文章
- Mybatis案例升级版——小案例大道理
纯Mybatis案例升级版——小案例大道理 前言: 这几天看了一本书<原则>,在上面看到了一句话叫“每个人都把自己眼界的局限当成世界的局限”,大学生是
- Mybatis(综合案例)
MyBatis本是apache的一个开源项目iBatis,2010年这个项目有Apache software foundation 迁移到了Google code,并改名MyBatis.2013年11 ...
- MyBatis入门案例、增删改查
一.MyBatis入门案例: ①:引入jar包 ②:创建实体类 Dept,并进行封装 ③ 在Src下创建大配置mybatis-config.xml <?xml version="1.0 ...
- MyBatis入门案例 增删改查
一.MyBatis入门案例: ①:引入jar包 ②:创建实体类 Dept,并进行封装 ③ 在Src下创建大配置mybatis-config.xml <?xml version="1.0 ...
- 8天入门docker系列 —— 第五天 使用aspnetcore小案例熟悉容器互联和docker-compose一键部署
这一篇继续完善webnotebook,如果你读过上一篇的内容,你应该知道怎么去挂载webnotebook日志和容器的远程访问,但是这些还远不够,webnotebook 总要和一些数据库打交道吧,比如说 ...
- node.js(小案例)_实现学生信息增删改
一.前言 本节内容主要对小案例做一个总结: 1.如何开始搭建小项目 2.路由设计 3.模块应用 4.项目源码以及实现过程github地址: 项目演示如下: 二.主要内容 1.项目的关键性js源码: 项 ...
- 一个ssm综合小案例-商品订单管理----写在前面
学习了这么久,一直都是零零散散的,没有把知识串联起来综合运用一番 比如拦截器,全局异常处理,json 交互,RESTful 等,这些常见技术必须要掌握 接下来呢,我就打算通过这么一个综合案例把这段时间 ...
- VUE小案例--简易计算器
这个小案例主要时练习v-model的使用,功能并不完善 <!DOCTYPE html> <html lang="zh-CN"> <head> & ...
- Mybatis入门案例中设计模式的简单分析
Talk is cheap, show me the code! public class TestMybatis { public static void main(String[] args) t ...
随机推荐
- 2012Noip提高组Day2 T3 疫情控制
题目描述 H 国有 n 个城市,这 n 个城市用 n-1 条双向道路相互连通构成一棵树,1 号城市是首都,也是树中的根节点. H 国的首都爆发了一种危害性极高的传染病.当局为了控制疫情,不让疫情扩散到 ...
- call和apply方法
/* * @ call和apply方法 * @ 当一个object没有某个方法,但是其他的有,我们可以借助call或apply用其它对象的方法来操作. * @ (有方法的)对象.call(" ...
- treeview(树加载)
数据库结构 id:int类型,主键,自增列: Name:char类型: paraid:int类型 窗台拖入控件treeview. 1.版本1 using System; using S ...
- ZOJ 3210 A Stack or A Queue?
A Stack or A Queue? Time Limit: 1 Second Memory Limit: 32768 KB Do you know stack and queue? Th ...
- 沈阳网络赛J-Ka Chang【分块】【树状数组】【dfs序】
Given a rooted tree ( the root is node 11 ) of NN nodes. Initially, each node has zero point. Then, ...
- Centos6与Centos7的区别
前言 centos7与6之间最大的差别就是初始化技术的不同,7采用的初始化技术是Systemd,并行的运行方式,除了这一点之外,服务启动.开机启动文件.网络命令方面等等,都说6有所不同.让我们先来了解 ...
- 配置oem
[oracle@kaifai ~]$ export ORACLE_SID=dbking[oracle@kaifai ~]$ export ORACLE_SID=kaifai[oracle@kaifai ...
- MySQL慢查询日志工具mysqlsla
mysql数据库的慢查询日志是非常重要的一项调优辅助日志,但是mysql默认记录的日志格式阅读时不够友好,这是由mysql日志记录规则所决定的,捕获一条就记录一条,虽说记录的信息足够详尽,但如果将浏览 ...
- installEventFilter可以安装到任何QObject的子类,并不仅仅是UI组件。事件过滤器和安装过滤器的组件必须在同一线程,在它们分属在不同线程时,事件过滤器也是不起作用的
Qt的事件知识点: ①事件对象创建完毕后,Qt 将这个事件对象传递给 QObject 的 event() 函数.event() 函数并不直接处理事件,而是将这些事件对象按照它们不同的类型,分发给不同的 ...
- python提取相对路径
原理: 用绝对路径,截断根目录的路径,就得到了相对路径. 代码 方法1:字符串替换(用字符串函数)推荐 import os print('==========1===========') abspat ...