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 ...
随机推荐
- handlebars的使用
web 开发中,js 解析JSON 是经常的事情.非常繁琐.handlebars 使用了模版,只要你定义一个模版,提供一个json对象,handlebars 就能吧json对象放到你定的模版中 htm ...
- 【BZOJ3262】陌上花开 cdq分治
[BZOJ3262]陌上花开 Description 有n朵花,每朵花有三个属性:花形(s).颜色(c).气味(m),又三个整数表示.现要对每朵花评级,一朵花的级别是它拥有的美丽能超过的花的数量.定义 ...
- 【Android】eclipse打不开的解决办法和“Jar mismatch! Fix your dependencies”的解决
JDK1.7能用,cmd下输入java,javac,java -version,javaw配置和环境都没问题的话,有可能是工作空间的问题,就是一般在D盘下的workspace..那个文件夹,删除了,再 ...
- zeptojs使用及介绍,手机端为什么一定要用zeptojs?
zepto是和jQuery和类似的框架,由于jQuery内置了很多解决浏览器兼容性的代码,导致jQuery过于臃肿,对于移动端来说,不需要太过于考虑浏览器的兼容,所以就诞生zeptojs. 总的来说: ...
- MYSQL创建数据表!
几个常见的建表原则: a,表都加前缀b,所有的字段选择最小的数据类型,如id可以使用mediumint比INT节省25%的空间c,尽量所有的字段都设置为NOT NULL的,这样能让速度更快d,为合适的 ...
- Morris InOrder Traverse Binary Tree 无需使用递归和栈
今天在切leetcode的时候看到一个Morris算法,用来中序遍历二叉树,非递归,O(1)空间.觉得很强大.记录一下. 基本思想是利用了Threaded Binary Tree. 步骤如下: cur ...
- Tomcat 启动出现警告问题Setting property 'minSpar eThreads' to '25' did not find a matching property
tomcat启动报错: Jul 19, 2017 3:10:02 PM org.apache.catalina.startup.SetAllPropertiesRule beginWARNING: [ ...
- fiddler win10-1703Failed to register Fiddler as the system proxy
正解 The solution for the Fiddler error of "Failed to register Fiddler as the system proxy" ...
- Oracle性能优化之oracle里表、索引、列的统计信息
一.表的统计信息 表的统计信息用于描述表的详细信息,包括记录数(num_rows).表块的数量(blocks).平均行长度(avg_row_len)等典型维度.这些维度可以通过数据字典表DBA_TAB ...
- 基于ArcGIS for Server的服务部署分析 分类: ArcGIS for server 云计算 2015-07-26 21:28 11人阅读 评论(0) 收藏
谨以此纪念去年在学海争锋上的演讲. ---------------------------------------------------- 基于ArcGIS for Server的服务部署分析 -- ...