MyBatis

SpringMVC 框架 组件细节 原理

我们两清 提交于 2020-05-05 12:45:47
SSM(Spring+SpringMVC+MyBatis) Spring   Spring就像是整个项目中装配bean的大工厂,在配置文件中可以指定使用特定的参数去调用实体类的构造方法来实例化对象。也可以称之为项目中的粘合剂。   Spring的核心思想是IoC(控制反转),即不再需要程序员去显式地 new 一个对象,而是让Spring框架帮你来完成这一切。 SpringMVC   SpringMVC在项目中拦截用户请求,它的核心Servlet即DispatcherServlet承担中介或是前台这样的职责,将用户请求通过HandlerMapping去匹配Controller,Controller就是具体对应请求所执行的操作。SpringMVC相当于SSH框架中struts。 mybatis   mybatis是对jdbc的封装,它让数据库底层操作变的透明。mybatis的操作都是围绕一个sqlSessionFactory实例展开的。mybatis通过配置文件关联到各实体类的Mapper文件,Mapper文件中配置了每个类对数据库所需进行的sql语句映射。在每次与数据库交互时,通过sqlSessionFactory拿到一个sqlSession,再执行sql命令。 页面发送请求给控制器,控制器调用业务层处理逻辑,逻辑层向持久层发送请求,持久层与数据库交互,后将结果返回给业务层

课堂管理系统;在线教辅平台;java课设

故事扮演 提交于 2020-05-05 12:00:08
# 白泽智慧教辅平台 **说明:** 运行时需要修改位置: bzedu\src\main\resources\application.properties bzedu\src\main\resources\config\mybatis-config.xml https证书配置请自行学习 数据库自行配置,直接导入提供的bzedu.sql即可 为方便下载学习,已将工程文件、演示视频、说明文档打包到百度云。 链接:https://pan.baidu.com/s/1rPebGhy7_w9tTjedcv66Ew 提取码:acg3 github: https://github.com/wonke/bzedu 欢迎star **1.** **技术概要** 后台框架:SpringBoot、Mybatis;前端框架:BootStrap、layUI; 数据库:MySQL;人脸签到:百度人脸识别API、webRTC、Canvas、Tracking.js; **2.** **项目介绍** 白泽智教是一款围绕教师授课全环节覆盖的在线教辅管理系统。系统功能有:人脸识别签到,智能语音点名,发布查看课堂作业,在线匿名评教,上传下载课件功能。 ​ **3.** **项目流程图** **4.** **功能设计** **(1)** **人脸签到:**教师发起当堂签到,设置截止时间,并可实时查看签到成功的学生名单

mysql技能梳理

此生再无相见时 提交于 2020-05-05 11:28:59
事务 不管是什么数据库,事务都是要考虑的。 一般情况下开发注重的是隔离性,如幻读,脏读,不可重复读。然后就是MySQL是怎么实现的。 知道事务的基本概念,那么就该知道数据库锁是什么个意思,然后有些时候死锁,数据库的卡顿,长时间没有响应都是因什么而起 索引和查询 MySQL 设计思想是”如果内存够,就要多利用内存,尽量减少磁盘访问“,而B+树就是能拥有高效查询减少磁盘访问次数的存储结构。基本上纵观MySQL的知识点,基本上都是遵循这个思想。 索引的结构 学习索引,要知道索引是什么样子的结构,为啥用B+,不用数组,不用哈希表,不用二叉树。一是为了减少io操作,二是结构不行,哈希只适合等值,数组插入性能不行,不过用来做静态存储还是可以的。 键 主键: 叶子节点存的是整行的数据。 非主键:叶子节点存的是主键的值 明白了键的存储方式后,查询的时候有一项优化叫 覆盖索引 ,目的就是避免 回表 ,实际操作是 联合索引 ,使用 联合索引 就要知道 最左匹配原则 ,然后就是知道在查询时,多条件的时候,怎么使用索引的 索引的创建和维护 创建时需要考量的有索引的长度,索引的使用场景,如果是联合索引还需要考虑怎么利用最左匹配原则来少创建索引 需要考虑长度的一般都是字符串索引,太长的是创建不了的。如果太长了也需要创建,可以考虑指给前缀创建索引,如果字符串类似身份证号似的,前缀都差不多一样,就需要换个思路

应用开发实践之关系型数据库(以MySql为例)小结

吃可爱长大的小学妹 提交于 2020-05-05 11:19:21
本文主要是对目前工作中使用到的DB相关知识点的总结,应用开发了解到以下深度基本足以应对日常需求,再深入下去更偏向于DB本身的理论、调优和运维实践。 不在本文重点关注讨论的内容(可能会提到一些): 具体的DQL、DML、DDL、DCL等语法 基础性的概念,如主键、索引、存储过程(注:阿里巴巴规范中禁止使用存储过程)等 联合查询,我个人不太喜欢在应用中写过于复杂的SQL,性能和后续维护容易出现问题 可能会用到的具体DB特性,如oracle的DATA GUARD 有一些属于基础知识或语法但是常用的信息,也会列一下,如join的用法。 一、基础 1. ACID DB的四大特性,这里简单概括下不具体展开。 原子性(Atomicity):事务操作中的多条SQL,要么全部成功要么全部失败,失败后回滚不对原有数据造成任何影响。 一致性(Consistency):事务开始前和结束后,数据库的完整性没有被破坏。如触发器、约束、级联回滚 隔离性(Isolation):多个事务支持并发读写。具体隔离级别见后文。 持久性(Durability):事务结束后,修改是永久的,不丢失。 2. 范式 这里展开讲比较复杂,实践中很少用到,一般满足1NF即可。 高一级必满足低一级。 1NF:每个属性都不可再分,即表的列是最原子的 2NF:在1NF基础上,消除非主属性对键的部分依赖。这里不解释非主属性和键的含义

应用开发实践之关系型数据库(以MySql为例)小结

人走茶凉 提交于 2020-05-05 10:07:20
本文主要是对目前工作中使用到的DB相关知识点的总结,应用开发了解到以下深度基本足以应对日常需求,再深入下去更偏向于DB本身的理论、调优和运维实践。 不在本文重点关注讨论的内容(可能会提到一些): 具体的DQL、DML、DDL、DCL等语法 基础性的概念,如主键、索引、存储过程(注:阿里巴巴规范中禁止使用存储过程)等 联合查询,我个人不太喜欢在应用中写过于复杂的SQL,性能和后续维护容易出现问题 可能会用到的具体DB特性,如oracle的DATA GUARD 有一些属于基础知识或语法但是常用的信息,也会列一下,如join的用法。 一、基础 1. ACID DB的四大特性,这里简单概括下不具体展开。 原子性(Atomicity):事务操作中的多条SQL,要么全部成功要么全部失败,失败后回滚不对原有数据造成任何影响。 一致性(Consistency):事务开始前和结束后,数据库的完整性没有被破坏。如触发器、约束、级联回滚 隔离性(Isolation):多个事务支持并发读写。具体隔离级别见后文。 持久性(Durability):事务结束后,修改是永久的,不丢失。 2. 范式 这里展开讲比较复杂,实践中很少用到,一般满足1NF即可。 高一级必满足低一级。 1NF:每个属性都不可再分,即表的列是最原子的 2NF:在1NF基础上,消除非主属性对键的部分依赖。这里不解释非主属性和键的含义

小记----Mybatis

北战南征 提交于 2020-05-05 02:33:24
使用mybatis操作数据库有两种方式xml注入和@注解方式,两种方式在项目中是可以共存的。 注解方式:使用注解方式 默认 需要实体类的属性值和表的列名保持一致,否则无法映射到对应的值;或者使用@Results来手动设置映射关系,优点:看着优雅一点,方便修改,缺点:动态sql语句不好写,比较麻烦 xml形式:很常用的方式,有各种逆向工程可以生成mapper.xml文件,看着比较乱,各种标签满天飞,修改的时候很痛苦 我们会发现无论是hibernate还是mybatis,为了方便我们的写sql都煞费苦心。但最后他们都殊途同归指向了“约定大于配置”。hibernate搞了个jpa,而mybatis也相应推出了mp。而mp 是一个 MyBatis 的增强工具 。 看看官网对他的介绍: 无侵入 :只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑 损耗小 :启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作 强大的 CRUD 操作 :内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求 支持 Lambda 形式调用 :通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错 支持主键自动生成 :支持多达 4 种主键策略(内含分布式唯一 ID 生成器 - Sequence)

Mybatis Plus 使用详解

落花浮王杯 提交于 2020-05-05 01:06:58
Mybatis Plus 是Mybatis的增强插件,对数据库操作Mybatis Plus提供了抽象层次比Mybatis更高的操作方法。 Wrapper是Mybatis Plus里拼接sql的包装类。具体的各种查询功能可以查看 Mybatis Plus 条件构造器官方文档 一、自定义查询字段 EntityWrapper 的setSqlSelect可以定义需要查询的库表字段。但是很多时候我们查询的数据可能来自不同的表,我们这时候可能需要用到子查询,那么这时候该怎么使用EntityWrapper 呢? 答案是直接写在setSqlSelect里面。例 Wrapper<Res> ew = new EntityWrapper<>(); ew.eq("deleted", 0); ew.setSqlSelect("*", "(select name from res_type where id=res_type_id) as res_type_name", "(select name from probe where id=probe_id) as probe_name"); 二、条件查询 一个很常见的场景是查询某字段的时候如果值不为空则查询,否则不查询。Mybatis Plus的拼接sql方法有一个条件拼接。 ew.eq(boolean condition,String column

Mybatis详解系列(一)--持久层框架解决了什么及如何使用Mybatis

谁说我不能喝 提交于 2020-05-05 00:26:11
简介 Mybatis 是一个持久层框架,它对 JDBC 进行了高级封装,使我们的代码中不会出现任何的 JDBC 代码,另外,它还通过 xml 或注解的方式将 sql 从 DAO/Repository 层中解耦出来,除了这些基本功能外,它还提供了动态 sql、延迟加载、缓存等功能。 相比 Hibernate,Mybatis 更面向数据库,可以灵活地对 sql 语句进行优化。 针对 Mybatis 的分析,我会拆分成 使用、配置、源码、生成器 等部分,都放在 Mybatis 这个系列里,内容将持续更新。本文是这个系列的第一篇文章,将从以下两个问题展开 : 持久层框架解决了哪些问题? 如何使用 Mybatis(这里会从入门到深入)? 项目环境的说明 为了更好地分析 Mybatis 的特性,本项目不会引入任何的依赖注入框架,将使用比较原生态的方式来使用 Mybatis。 工程环境 JDK:1.8.0_231 maven:3.6.1 IDE:Spring Tool Suites4 for Eclipse 4.12 (装有 Mybatipse 插件) mysql:5.7.28 依赖引入 Mybatis 有自带的连接池,但实际项目中建议还是引入第三方的比较好。 <!-- Mybatis --> <dependency> <groupId>org.Mybatis</groupId>

Mybatis使用入门,这一篇就够了

自闭症网瘾萝莉.ら 提交于 2020-05-05 00:24:53
mybatis中,封装了一个sqlsession 对象(里面封装有connection对象),由此对象来对数据库进行CRUD操作。 运行流程 mybatis有一个配置的xml,用于配置数据源、映射Mapping,xml的文件名可以任取,为了方便,我们还是起mybatis-config.xml 我们读取此配置的xml,获得一个sqlsession,之后由此对象类进行数据库的CRUD操作 Reader reader = Resources.getResourceAsReader("mybatis-config.xml"); SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader); SqlSession sqlSession = factory.openSession(); 入门使用 1. 创建实体类和Dao类 2. 配置mybatis-config.xml文件,配置数据源 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">

mybatis plus 一对多,多表联查的使用小记

倾然丶 夕夏残阳落幕 提交于 2020-05-05 00:14:11
阅读本博文需要有基础的mybatis以及mybatis plus知识,如果没有建议您了解相关的内容 本项目使用的是springboot构建的,数据库字段命名不严谨仅做演示测试使用,本文不做相关源码的解析只做功能使用讲解 相对于mybatis来说 plus用起来真的很舒服,单表查询crud,以及分页功能真的如丝般顺滑,使用方法就不再一一赘述献丑了,因为查询了很多资料各种方法都有甚至可以使用注解来进行查询,但是我认为这样不便于管理,因此没有找到对我有用的相关连表,关联查询的方法,所以自己只能退而求次用mybatis的原始方法来做连表查询仅供参考,如果您有更好的特别欢迎您分享。 本篇文章讲的是如何来做一对多关系的查询, 使用的是xml来配置相关查询语句。 我们单表查询的时候BaseMapper<T>基本的功能都实现了,同时mybatis plus的条件构造器QueryWrapper 可以帮助我们构建各种条件,如果特别复杂那就得手写了。 以学生,老师为例老师对学生为一对多,学生对老师也是一对多(这里只做老师的例子) 我的实体实现了Serializable接口这个看你个人的需求,在这里我重写了toString 方法,目的是做测试打印的,实际开发当中作为一个有工作经验的coder来说肯定知道不要重写tostring 老师实体的第4行代码代码我注释了,具体原因后续会讲。 1 @TableName