MyBatis

SMM高级整合实战项目—-增删改查(快速搭建一个J2EE项目)

扶醉桌前 提交于 2020-10-04 03:56:13
置顶:抱歉之前没有上传数据库文件,重新补上 项目源码下载: https://download.csdn.net/download/qq_36102598/11141098 数据库下载: https://pan.baidu.com/s/1rfyADXxjkwHsr9cC7yKLiw 提取码:8bhx 视频学习地址: https://study.163.com/course/courseMain.htm?courseId=1003862031 功能点: 分页 数据校验(前端校验+JSR303后端校验) Ajax Rest风格的URI;使用HTTP协议请求方式的动词,来表示对资源的操作(GET(查询),POST(新增),PUT(修改),DELETE(删除)) 技术点: 基础框架-SSM(SpringMVC+Spring+MyBatis) 数据库Mysql 前端框架-bootstrap快速搭建简洁美观的界面 项目依赖管理-Maven 分页-pagehelper 逆向工程-MyBatis Generator 知识点总结: 项目截图: 来源: oschina 链接: https://my.oschina.net/u/4292686/blog/4482114

《Mybatis编程自学与面试指南》01-06:主配文件mybatis-config.xml

ε祈祈猫儿з 提交于 2020-10-04 00:57:48
内容导航 : 前言 1、主配文件 2、根节点 3、属性配置 4、类型别名配置 5、环境配置 6、映射器配置 前言 正确配置主配文件是Mybatis能够Run起来的前提。 1、主配文件 在 src 源码文件夹下创建 mybatis-config.xml 主配文件,并配置Mybatis属性、类型别名、环境和映射器。 2、根节点 <?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"> < configuration > <!-- 配置列表 --> </ configuration > 3、属性配置 <!-- 属性配置 --> < settings > < setting name = " mapUnderscoreToCamelCase " value = " true " /> < setting name = " lazyLoadingEnabled " value = " true " /> </ settings > 4、类型别名配置 <!-- 类型别名配置 --> < typeAliases > < typeAlias type

让媳妇瞬间搞懂Spring 多数据源操作(SpringBoot + Durid)

我是研究僧i 提交于 2020-10-03 12:15:18
1、快速理解 Spring 多数据源操作 最近在调研 Spring 如何配置多数据源的操作,结果被媳妇吐槽,整天就坐在那打电脑,啥都不干。于是我灵光一现,跟我媳妇说了一下调研结果,第一版本原话如下: Spring 提供了一套多数据源的解决方案,通过继承抽象 AbstractRoutingDataSource 定义动态路由数据源,然后可以通过AOP, 动态切换配置好的路由Key,来跳转不同的数据源。 Spring ?春天 ?我在这干活你还想有春天,还有那个什么什么抽象,我现在有点想抽你。好好说话 ! 媳妇,莫急莫急,嗯… 等我重新组织一下语言先。我想了一会缓缓的对媳妇说: 生活中我们去景点买票或者购买火车票,一般都有军人和残疾人专门的售票窗口,普通人通过正常的售票窗口进行购票,军人和残疾人通过专门的优惠售票窗口进行购票。 为了防止有人冒充军人或残疾人去优惠售票窗口进行购票,这就需要你提供相关的证件来证明。没有证件的走正常售票窗口,有证件的走优惠售票窗口。 那如何判断谁有证件,谁没有证件呢? 这就需要辛苦检查证件的工作人员。默认情况下,正常售票窗口通道是打开的,大家可以直接去正常的售票窗口进行购票。 如果有军人或残疾人来购票,工作人员检查相关证件后,则关闭正常售票窗口通道,然后打开优惠窗口通道。 在理解了购票的流程后,我们在来看 Spring 动态数据源切换的解决方案就会容易很多

mybatis源码

一个人想着一个人 提交于 2020-10-03 08:43:53
1. 若要查询本次查询的sql,怎么弄? --》往下走:该prepareStatement中就可以看到sql 3.RoutingStatementHandler 路由Statement,该方法在prepare之前执行 public RoutingStatementHandler(Executor executor, MappedStatement ms, Object parameter, RowBounds rowBounds, ResultHandler resultHandler, BoundSql boundSql) { switch(ms.getStatementType()) { case STATEMENT: this.delegate = new SimpleStatementHandler(executor, ms, parameter, rowBounds, resultHandler, boundSql); break; case PREPARED: this.delegate = new PreparedStatementHandler(executor, ms, parameter, rowBounds, resultHandler, boundSql); break; case CALLABLE: this.delegate = new

mybatis之foreach用法

十年热恋 提交于 2020-10-03 06:36:55
在做mybatis的mapper.xml文件的时候,我们时常用到这样的情况:动态生成sql语句的查询条件,这个时候我们就可以用mybatis的foreach了 foreach元素的属性主要有item,index,collection,open,separator,close。 item: 集合中元素迭代时的别名,该参数为必选。 index :在list和数组中,index是元素的序号,在map中,index是元素的key,该参数可选 open :foreach代码的开始符号,一般是(和close=")"合用。常用在in(),values()时。该参数可选 separator :元素之间的分隔符,例如在in()的时候,separator=","会自动在元素中间用“,“隔开,避免手动输入逗号导致sql错误,如in(1,2,)这样。该参数可选。 close: foreach代码的关闭符号,一般是)和open="("合用。常用在in(),values()时。该参数可选。 collection: 要做foreach的对象,作为入参时,List对象默认用"list"代替作为键,数组对象有"array"代替作为键,Map对象没有默认的键。当然在作为入参时可以使用@Param("keyName")来设置键,设置keyName后,list,array将会失效。 除了入参这种情况外

Java反射

只谈情不闲聊 提交于 2020-10-03 06:28:31
类中类 1. 反射介绍 反射这一概念最早由编程开发人员Smith在1982年提出,主要指应用程序访问、检测、修改自身状态与行为的能力。这一概念的提出立刻吸引了编程界的极大关注,各种研究工作随之展开,随之而来引发编程革命,出现了多种支持反射机制的面向对象语言。 在计算机科学领域,反射是指一类能够自我描述和自控制的应用。在Java编程语言中,反射是一种强有力的工具,是面向抽象编程一种实现方式,它能使代码语句更加灵活,极大提高代码的运行时装配能力。 2. 反射在java中的体现 Java反射说的是在运行状态中,对于任何一个类,我们都能够知道这个类有哪些方法和属性。对于任何一个对象,我们都能够对它的方法和属性进行调用。我们把这种动态获取对象信息和调用对象方法的功能称之为反射机制。案例: ​ 和 https://programmer.help/blogs/reflection-and-dynamic-agent-in-mybatis.html 2.1 获取Class对象 反射其实是获取类的字节码文件( 在JVM的世界里只会有有一份,不管以不同的方式加载多少次 ),也就是.class文件,那么我们就可以通过Class这个对象进行获取,有三种方式:通过类名的class属性、对象的getClass()方法和java.lang.Class的静态方法forName(“类全路径”) import

SpringBoot 自动代码生成三层

谁说胖子不能爱 提交于 2020-10-03 03:06:34
前言 虽然mybatis已经有了代码生成,但是对于SpringBoot 项目来说生成的还是需要改动,而且也没得逻辑层,和控制层。但是这些东西是逃避不了,所以我就针对单表,做了一个代码生成器。 mybatis-dsc-generator 根据完善的数据库表结构,一键生成dao.java,mapper.xml,service.java,serviceImpl.java,controller.java,完成单表的增删改查、组合条件集合查询,组合条件分页查询。 源码地址 GitHub: https://github.com/flying-cattle/mybatis-dsc-generator 码云: https://gitee.com/flying-cattle/mybatis-dsc-generator MAVEN地址 <dependency > <groupId >com .github .flying -cattle < /groupId > <artifactId >mybatis -dsc -generator < /artifactId > <version > 1.0 . 0 .RELEASE < /version > < /dependency > 数据表结构样式 CREATE TABLE `order` ( `id` bigint ( 20 ) NOT NULL

记一次 Mybatis 一级缓存清理无效引起的源码走读

前提是你 提交于 2020-10-02 22:31:48
今天对象在学习 Mybatis 时发现 org.apache.ibatis.session.SqlSession 对象的 clearCache() 方法并不能清理一级缓存, 同一 session 下相同查询条件返回的结果还是旧值。测试代码如下 上网搜索 网上搜索找到了相同问题, 并没有人解答。例如: https://www.iqismart.com/topi... 查看官方文档 http://www.mybatis.org/mybati... SqlSession 实例有一个本地缓存在执行 update,commit,rollback 和 close 时被清理。要明确地关闭它(获取打算做更多的工作) ,你可以调用 clearCache()。 看起来, 没什么问题, 方法也没有被标记成废弃. 打印详细日志 先把日志配上, 看看有没有打印什么有用的信息, 添加 slf4j、logback 依赖,添加 logback.xml , 日志级别设置为 DEBUG 运行后未看到跟清理缓存有关的信息, 调整日志级别为 TRACE 后依旧没有. < configuration> < contextName>mybatis </ contextName> < appender name= "stdout" class= "ch.qos.logback.core.ConsoleAppender"> <

还在羡慕别人高薪?这样读源码,想不升薪都难!

人盡茶涼 提交于 2020-10-02 20:42:49
程序员在工作过程中,会遇到很多需要阅读源码的场景,比如技术预研、选择技术框架、接手以前的项目、review他人的代码、维护老产品等等。可以说,阅读源代码是程序员的基本功,这项基本功是否扎实,会在很大程度上影响一个程序员在技术上的成长速度。 2014年的时候《Qt on Android核心编程》和《Qt Quick核心编程》时作者在编写时,很多内容都是通过分析Qt源码搞明白的。这阵子研究CEF和PPAPI,也主要靠研究源代码来搞明白用法。最近工作上要修改已有项目的一个子系统,也是得硬着头皮先读懂代码。 总之在开发工作这十来年中,读过太多源码了,从源代码中学习到太多东西了,如果不阅读源代码,真不知道自己能否成长起来。 写代码是从模仿开始的,提高也是从观摩别人的优秀设计和代码开始的。所以阅读源码至关重要,接下来咱从下列方面聊聊阅读源码的事儿。 目的 工具 知识准备 运行与开发环境 笔记 实用技巧 心理调试(散步在各个环节) 目的 当我们阅读面前的源码时,无非有以下几种目的: 纯粹学习 添加新功能 重构旧代码 修复他人的Bug 不同的目的会有不同的心情,会影响到工作的进展,像修复他人的Bug这种事情,类似于没被掰弯的男猿捏着鼻子给另外一个男人擦屁股,是很恶心的,很容易让人拒绝的。所以因这种目标而阅读源码,往往是欲拒还迎、欲说还休,效率较低。然而修复实际工作中帮别人修复Bug这种情形