MyBatis

1.企业对开发者mybatis的要求是怎样的

醉酒当歌 提交于 2020-07-29 10:39:57
作为一名java开发工程师,对我而言,最简单的了解技术发展趋势的方法是没事儿多看看招聘需求。 毕业后做了几年开发,到了需要记笔记,写博客的时候了,因为总结对于做技术的真的很重要;所以看了看招聘需求,并在网上查了查一些热门的面试题,并结合了自身的面试经历,做了一些对于学习mybatis要点的总结。 企业要求: 对mybatis有深入的应用和优化经验,掌握它的原理机制,有框架开发或重构经验者优先考虑。(这应该就是所谓精通) 面试常问的技术点: 什么是orm,说说你对mybatis的理解? 在关系型数据库中,将表与java对象做了一个映射,通过操作java对象来实现对表的操作,使java开发者更加专注于java代码与流程的开发,更贴近面向对象的开发思想。而mybatis是一个半自动的orm框架,内部对jdbc进行了多层的封装与扩展,通过xml或者注解将接口与sql进行关联与定位,所以需要开发者编写原生sql,并且灵活度更高,更适合敏捷开发与产品的快速迭代。 jdbc的缺点是什么,mybatis是如何解决mybatis缺点的? jdbc需要手动创建和关闭数据库的连接,手动解析结果集,几乎全都需要手动处理,冗余代码极多;mybatis通过xml映射,使开发者关注于接口的设计与sql的编写,至于数据库的驱动和连接的创建销毁以及连接池的应用,都交给框架自己完成。 有哪些动态sql标签

#{}和${}的区别

天涯浪子 提交于 2020-07-29 10:35:10
两者都可以在mybatis中用在输入映射 {}是预编译处理, ${}是字符串替换。 mybatis在处理#{}时,会将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值; mybatis在处理 $ { } 时,就是把 ${ } 替换成变量的值,完成的是简单的字符串拼接。 补充:在mybatis中使用#{}可以防止sql注入,提高系统安全性。 sql注入是什么: 例如:用户输入的账号密码在代码中是以字符串拼接的方式生成查询语句的,这样用户输入的内容很容易改变我们的原查询代码,这就相当一一个数据库注入问题。 我们验证密码和账号的时候,如果用户在输入密码的时候 输入 or 1=1;那不管他输入的密码是什么都可以通过。 来源: oschina 链接: https://my.oschina.net/u/4346770/blog/4441458

Mybatis操作oracle数据库的一些坑

[亡魂溺海] 提交于 2020-07-29 09:56:04
oracle区分大小写,如果不想区分,必须要用引号包住 使用mybatis的generator生成的时候,建议使用全大写表,中间用下划线隔开,会生成驼峰字段 oracle没有空字符串的概念 写mybatis的sql语句时,不能有分号 待探索。。。 来源: oschina 链接: https://my.oschina.net/u/4255345/blog/4320809

小书MybatisPlus第1篇-整合SpringBoot快速开始增删改查

泪湿孤枕 提交于 2020-07-29 07:54:32
Mybatis Plus官方文档已经很完善了,为什么还要写一个这样的文档? 官方文档注重知识结构的整理,没有注重学习者的学习顺序 官方文档中的案例注重API描述,比较适合学会mybatis plus之后,遇到问题再去翻阅。对于第一次使用Mybatis的初学者进行学习不是非常友好。 官方文档考虑的是全面完整的介绍Mybatis Plus, 我考虑的角度是:“最佳实践”。 世界上很多东西都符合2/8原则,本文档的目的是将: 最重要最常用的那20%帮你提炼出来、快速上手应用! 。另外的那80%都是不常用的,有空自己再去官方文档里面学吧! 官网文档地址: https://mybatis.plus/guide/ 我会将此文档写成一个系列的内容,记得关注我!zimug.com 我会将此文档写成一个系列的内容,记得关注我!zimug.com 我会将此文档写成一个系列的内容,记得关注我!zimug.com 一、Spring Boot整合Mybatis Plus 通过maven坐标引入依赖 <!-- mybatis --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.1.2</version> </dependency> <!--

3、MySql第三章,分库分表、MyCat概述及安装登录

孤街醉人 提交于 2020-07-29 07:19:40
MySql第三章,分库分表、MyCat概述及安装登录 先下定论,数据库优化顺序: 1、单库单表; 2、单库单表主从复制; 3、垂直分库; 4、水平分区; 5、水平分表; 一、概述 1、为什么要分库分表 数据库的复制能解决访问问题(主从复制),并不能解决大规模的并发写入问题,由于无法进行分布式部署,而一台服务器的 资源(CPU、磁盘、内存、I0等)是有限的,最终数据库所能承载的数据量、数据处理能力都将遭遇瓶颈。要解决这个问题就要 考虑对数据库进行分库分表了。 2、分库分表的优点 1、解决磁盘系统最大的文件限制 2、减少增量数据写入时的锁对查询的影响,减少长时间查派造成的表锁,影响写入操作等锁竞争的情况,节省排队的时间开 支,增加吞吐量。 3、由于单表数量下降,常见的查询操作由于减少了需要扫描的记录,使得单表单次查询所需的检索行数变少,减少了磁盘 I0,时延变短。 3、什么是分库--垂直切分 分库又叫垂直切分,就是把原本存储于一个库的表拆分存储到多个库上,通常是将表按照功能模块、关系密切程度划分出来, 部署到不同的库上。如果数据库是因为表太多而造成海量数据,并且项目的各项业务逻辑划分清晰、低耦合,那么规则简单朋 了、容易实施的首选就是分库。 [如:将一个电商数据库拆分为:user库、shop库、ums库、home库、promo库、manager库等] 分库的优点是:实现简单

mybatis报:The content of element type must match xx

隐身守侯 提交于 2020-07-29 06:54:04
使用org.mybatis.generator反向生成mapper、mapper.xml、do、doExample文件,配置文件generatorConfig.xml报如下错误: The content of element type must match "property*, plugin*, commentGenerator?, jdbcConnection, javaTypeResolver?,javaModelGenerator, sqlMapGenerator?, javaClientGenerator?, table+" 原因 配置文件 generatorConfig.xml 里面的context的子元素必须按照它给出的顺序,如错误提示的match“……”部分。 解决方案 按照提示依照"property , plugin , commentGenerator?, jdbcConnection, javaTypeResolver?,javaModelGenerator, sqlMapGenerator?, javaClientGenerator?, table+"元素顺序进行配置 generatorConfig.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration

咕泡三期 Java高级开发 java进阶大型互联网架构师专题

筅森魡賤 提交于 2020-07-29 04:55:33
咕泡三期 Java高级开发|java进阶大型互联网架构师专题 微云链接:链接:https://share.weiyun.com/hBSBy6Ri 密码:2jcqev 百度网盘: 链接: https://pan.baidu.com/s/1-hQxabDqeHzxBA-yWIvZGQ 密码: otf9 更多资源加微信:itit11223344 Java架构班开学典礼 【回放】Java架构班开学典礼(2月19日 20:00-21:30) 02 架构师内功心法之设计原则 【回放】为什么要学习软件架构设计原则(2月22日 20:00-22:00) 03 架构师内功心法之设计模式 【回放】设计模式总览及工厂模式详解(2月23日 20:00-22:00) 【回放】单例模式详解(2月26日 20:30-22:30) 【回放】原型模式与建造者模式详解(2月29日 20:00-22:00) 【回放】深度分析代理模式详解(3月1日 20:00-22:00) 【回放】门面模式与装饰器模式详解(3月4日 20:30-22:30) 【回放】享元模式与组合模式详解(3月7日 20:00-22:00) 【回放】适配器模式与桥接模式详解(3月8日 20:00-22:00) 【回放】委派模式与模板方法模式详解(3月11日 20:30-22:30) 【回放】策略模式与责任链模式详解(3月14日 20:00-22:00)

如何写一对多分页的SQL

久未见 提交于 2020-07-29 04:26:22
MySQL一对多的数据分页是非常常见的需求,比如我们要查询商品和商品的图片信息。但是很多人会在这里遇到分页的误区,得到不正确的结果。今天就来分析并解决这个问题。 MySQL一对多的数据分页是非常常见的需求,比如我们要查询商品和商品的图片信息。但是很多人会在这里遇到分页的误区,得到不正确的结果。今天就来分析并解决这个问题。 问题分析 我们先创建一个简单商品表和对应的商品图片关系表,它们之间是一对多的关系: 然后我分别写入了一些商品和这些商品对应的图片,通过下面的左连接查询可以看出它们之间具有明显的一对多关系: SELECT P.PRODUCT_ID, P.PROD_NAME, PI.IMAGE_URL FROM PRODUCT_INFO P LEFT JOIN PRODUCT_IMAGE PI ON P.PRODUCT_ID = PI.PRODUCT_ID 按照传统的思维我们的分页语句会这么写: 当我按照预想传入了(0,2)想拿到前两个产品的数据,结果并不是我期望的: 2020-06-21 23:35:54.515 DEBUG 10980 --- [main] c.f.m.mappers.ProductInfoMapper.page : ==> Preparing: SELECT P.PRODUCT_ID, P.PROD_NAME,PI.IMAGE_URL FROM PRODUCT

IDEA集成MyBatis Generator 插件

▼魔方 西西 提交于 2020-07-28 20:33:39
1、修改maven的pom文件 <build> <plugins> <!-- 自动生成代码插件--> <!-- mybatis generator 自动生成代码插件 --> <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version> 1.3 . 7 </version> <configuration> <configurationFile>src/main/resources/generator/generatorConfig.xml</configurationFile> <overwrite> true </overwrite> <verbose> true </verbose> </configuration> <dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version> 8.0 . 13 </version> </dependency> </dependencies> </plugin> </plugins> </build> 2

spring boot activiti vue工作流,权限管理框架

…衆ロ難τιáo~ 提交于 2020-07-28 18:06:44
是什么? 使用springboot,activiti,mybatis,vue elementui开发的后台管理系统(包含权限管理、工作流等功能),真正前后端分离的微服务架构,经过很多项目实战、淬炼、软件开发公司主流技术的集大成者。 功能点、技术点 前端采用vue element ui框架,后端spring boot,mybatis开发框架,数据库:mysql,前后端分离。 采用activiti工作流工作流框架, 自定义流程设计 流程提供发起、跳转、转办、委派、授权、任务处理,人员角色获取、角色类型获取、 会签 等功能。 采用安全框架 Spring Security (登录授权)实现组织机构、角色,人员、功能权限、 数据权限 功能。 提供 页面扩展 功能, 拖拽及可以扩展页面功能 后端多模块项目(基础设施子项目、基础功能子项目、业务功能子项目),结构清晰、各子项目独立扩展、升级。 后端系统组件化,提供 分页 、 树形 、 通用查询 数据结构,封装系统复杂度,只需要写出简单的业务代码,即能完成一个复杂的功能。 前端项目多模块(基础组件、通用框架、基础功能,业务功能),结构清晰,子项目独立。 前后端完美结合,很简单的代码即可以实现分页列表、树形等复杂页面。 前端提供数字输入、货币输入( 输入时自动中文货币提示 )、百分比输入、整数输入、 字典下拉 、日期快捷输入、日期范围输入表单控件。