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 ...
随机推荐
- 【BZOJ2300】[HAOI2011]防线修建 set维护凸包
[BZOJ2300][HAOI2011]防线修建 Description 近来A国和B国的矛盾激化,为了预防不测,A国准备修建一条长长的防线,当然修建防线的话,肯定要把需要保护的城市修在防线内部了.可 ...
- Unity3D笔记九 发送广播与消息、利用脚本控制游戏
一.发送广播与消息 游戏对象之间发送的广播与消息分为三种:第一种向子对象发送,将发送至该对象的同辈对象或者子孙对象中:第二种为给自己发送,发送至自己本身对象:第三种为向父对象发送,发送至该对象的同辈或 ...
- log buffer space事件(转)
看了这篇文章: Oracle常见的等待事件说明http://database.ctocio.com.cn/tips/38/6669538.shtml 对于Log Buffer Space-日志缓冲空间 ...
- python中的configparser类
Python中有ConfigParser类,可以很方便的从配置文件中读取数据(如DB的配置,路径的配置),所以可以自己写一个函数,实现读取config配置. config文件的写法比较简单,[sect ...
- [Gradle] 发布构件到本地仓库
配置 需要发布构件的模块 build.gradle 加入如下配置 apply plugin: 'maven-publish' publishing { publications { mavenJava ...
- javascript飞机大战-----005创建子弹对象2
子弹销毁 /* 创建子弹:因为子弹不是只创建一个所以要用构造函数 注意一点:子弹发射的位置应该是英雄机的正中央的位置,所以需要传点东西进来 */ function Bullet(l,t){ this. ...
- Oracle安装部署之 timesten install on redhat6.5
一.安装前检查 [root@localhost ~]# cat /etc/redhat-release Red Hat Enterprise Linux Server release 6.5 (San ...
- 数据库们~MySQL~MongoDB~Redis
mysql基础 mysql进阶 python操作mysql MongoDB Redis
- 从LayoutInflater分析XML布局解析成View的树形结构的过程
上一篇博客分析了XML布局怎么载入到Activity上.不了解的能够參考 从setContentView方法分析Android载入布局流程 上一篇博客仅仅是分析了怎么讲XML布局加入到 Activit ...
- python 面向对象 isinstance
查看某个对象是否 这个类实例 是返回True 否则返回False class Foo(object): pass obj = Foo() class Boo(object): pass print(i ...