(11)Mybatis
文章平均质量分 78
Mybatis介绍;JUnit4单元测试;Mybatis基本使用;SQL传参;查询;插入、修改与删除;SQL攻击;MyBatis工作流程。MyBatis日志与动态SQL;MyBatis二级缓存;OneToMany对象关联查询;PageHelper分页;C3P0连接池;批处理;MyBatis注解。
小懒羊爱吃草
小枯林
展开
-
MyBatis进阶九:Mybatis注解开发;(查询案例,插入案例,***DTO类的结果映射)
本篇内容仅供了解。。。因为,现在mybatis很少使用注解的方式开发;Mybatis利用注解来简化程序开发;在Mybatis中注解的主要是,替代原有xml的各种标签,在程序中利用对应的注解来进行开发,进而简化程序的配置过程。注解可以理解为,把【原先放在xml中的配置信息和SQL语句】放在java程序中书写。注解开发的有点:可以有更好的开发体验,可以让程序开发的更快。一:预备工作:创建一使用Maven管理依赖的mybatis项目这个mybatis项目很简单,仅仅用于演示My.原创 2021-05-14 03:11:09 · 1036 阅读 · 1 评论 -
MyBatis进阶八:Mybatis批处理;(批量插入,批量删除,批量更新待写…)
fsd原创 2021-05-13 20:16:17 · 21767 阅读 · 7 评论 -
MyBatis进阶七:MyBatis整合C3P0连接池;
Mybatis整合其他连接池,本篇博客以整合C3P0连接池为例。目录MyBatis整合C3P0连接池的步骤:(1)第一步:通过maven引入C3P0的依赖;(2)第二步:创建C3P0和Mybatis兼容所需的数据源工厂类(3)第三步:在mybatis-config.xml核心配置文件中设置(4)第四步,测试连接池但是目前,在主流开发中,不推荐使用Mybatis自带的连接池;C3P0,Druid,DBCP等连接池都更强大;但是,Mybatis默认没有提供如C3P0直接的开.原创 2021-05-12 19:18:11 · 1655 阅读 · 1 评论 -
MyBatis进阶六:不同数据库的分页实现原理;(了解下就OK了)
不同数据库中,分页的实现原理是不同的。MySQL分页:limit关键字:第一个参数,起始的行号;第二个参数,从起始行号算起向后取多少条数据;在前面SQL【select * from table】执行完了之后,就可以使用【limit 10,20】对这个区间中的数据进行截取了;Oracle分页:Oracle是目前商用数据库中主流数据库。Oracle实现分页查询比较麻烦:需要三层嵌套(1)第一层(黄色框内):表示核心的查询语句;对于不同的业务,这里面的SQL语句不同;(2)原创 2021-05-12 17:59:55 · 494 阅读 · 0 评论 -
MyBatis进阶五:PageHelper分页插件;
PageHelper分页插件:帮助我们自动完成分页查询的工作。分页查询,开发起来其实挺复杂的;(1)使用MySQL中的limit实现查询第几页的时候,需要计算查询第几个到第几个,,,这其实有点小麻烦,容易算错;(2)需要计算总记录数,,,,这需要额外的创建一个SQL语句来获取记录总数;(3)得到总数后,需要根据每页显示几条数据,来计算总页数,当前页是哪一页,上一页是哪一页,下一页是哪一页……这些信息都获取后,才能在前台展现;挺麻烦的。为此,Mybatis提供了Page..原创 2021-05-12 17:21:44 · 42955 阅读 · 6 评论 -
MyBatis进阶四:Mybatis对象关联查询;(【一对多】(<collection>)&【多对一】(association))
OneToMany对象关联查询原创 2021-05-12 00:58:22 · 1836 阅读 · 0 评论 -
MyBatis进阶三:Mybatis缓存;(包括一级缓存和二级缓存)
Mybatis缓存。目录0.什么是缓存,为什么要引入缓存:1.Mybatis中的缓存简介:(1)一级缓存和二级缓存简介(2)缓存的范围(3)在编码中如何使用二级缓存,二级缓存的规则2.案例演示(1)案例1:一级缓存当然,第一次查询的时候,是会执行SQL语句,从数据库去提取结果的;但是,第二次查询相同的数据的时候,第二次就会从本sqlSession的一级缓存中去提取数据了;不同的sqlSession之间,其缓存的对象只对自己availablesqlSessi..原创 2021-05-11 01:45:40 · 1828 阅读 · 1 评论 -
MyBatis进阶二:MyBatis动态SQL;(仅仅涉及【if语句】)
本篇博客的动态SQL,仅仅涉及if语句;【if+where语句】,【if+set语句】,【choose(when,otherwise)语句】,【trim语句】,【SQL片段】,【foreach语句】均没有涉及。案例挺多,其实内容很少,快速浏览效果更佳。目录0.动态SQL简介动态SQL的使用场景:Mybatis支持了动态SQL:1.使用where关键字,而不使用标签(1)案例1:使用where关键字很容易出错(2)案例2:使用where关键字很容易出错(3)案...原创 2021-05-09 22:13:50 · 461 阅读 · 4 评论 -
MyBatis进阶一:slf4j日志门面和logback日志组件;(在MyBatis中的使用logback)(本篇博客仅仅是在控制台输出日志信息,不涉及把日志信息存储到日志文件)
目录日志简介首先,在pom.xml中增加logback的依赖:然后,上面在pom.xml中引入logback后,运行程序,观察效果:最后,logback日志自定义格式:附1:日志级别附2:logback官网附3:让日志输出到一个日志文件中,而不是输出到Console控制台中(待解决)日志简介日志就是系统运行的历史记录。日志是任何一个系统都必不可少的东西,mybatis自然也离不开日志;在系统运行过程中,mybatis在后台默默地产生着各种日志。...原创 2021-05-09 02:14:35 · 1735 阅读 · 0 评论 -
MyBatis入门十三:MyBatis工作流程(Summary);Mybatis入门常见问题;(本篇博客没什么内容,仅仅是一个总结)
MyBatis入门部分的一个小总结。目录1.mybatis工作流程2.MyBatis入门常见问题(1)数据库连接池,DbUtils,Mybatis区别(2)pom.xml中添加依赖失败(3)实体类的属性名需要和数据库表字段保持一致吗?(4)全局唯一对象和单例模式的区别?1.mybatis工作流程看下这个图,没什么意思~~~2.MyBatis入门常见问题(1)数据库连接池,DbUtils,Mybatis区别个人感觉: ● 数据库连接池...原创 2021-05-08 19:01:53 · 247 阅读 · 0 评论 -
MyBatis入门十二:预防SQL注入攻击;(${}和#{}的区别)
本篇博客的内容不多,就一条:大部分情况下,使用#{}预编译的手段,而不是用${}原文传值。目录0.SQL注入攻击简介 & #{}和${}简介1.使用${}原文传值这种取值方式:2.使用#{}预编译这种取值方式:3.So,#{}预编译这种方式这么给力,为什么还需要${}原文传值这种方式嘞?0.SQL注入攻击简介 & #{}和${}简介具体可参考:JDBC入门六:SQL注入攻击:什么是SQL注入攻击?;Java中引号嵌套的分析;在实际应...原创 2021-05-08 18:29:33 · 536 阅读 · 0 评论 -
MyBatis入门十一:Mybatis数据插入、修改、删除三:更新数据,删除数据;
本篇博客内容是:修改数据 & 删除数据。目录0.更新和删除简介1.更新(1)先在goods.xml中编写【修改的SQL标签】(2)然后,测试 &运行结果2.删除(1)先在goods.xml中编写【删除的SQL标签】(2)然后,测试 &运行结果0.更新和删除简介更新和删除:自然,删除时,parameterType是其他的包装类型,或者Goods类型,或者Map等(应该)都是可以的。1.更新(1)先在goods.xm...原创 2021-05-08 13:27:19 · 617 阅读 · 2 评论 -
MyBatis入门十:Mybatis数据插入、修改、删除二:<selectKey>标签和useGeneratedKeys属性的区别;(一个相对独立的知识点)
通过上篇博客MyBatis入门九:Mybatis数据插入、修改、删除一:插入数据;可知,<selectKey>标签的作用是在数据插入以后,把最新的主键值进行返回和回填。useGeneratedKeys属性也是用于获取最新生成的主键id的,那么<selectKey>标签和useGeneratedKeys属性的区别是什么嘞?<selectKey>标签的用法:<selectKey>标签必须书写在<insert>标签中;…………….原创 2021-05-08 10:57:18 · 668 阅读 · 0 评论 -
运行报错【java.lang.NoClassDefFoundError: Could not initialize class】:这儿的原因是Mapper xml中SQL标签的id重复了。
运行时发现报错信息是169行然后,检查169行的代码(自然包括169行调用的代码啦)并没有发现明显的问题,然后我们可以注释掉169行的代码,然后重新运行,比如:此时的运行报错信息如下:"C:\Program Files\Java\jdk1.8.0_162\bin\java.exe" -ea -Didea.test.cyclic.buffer.size=1048576 "-javaagent:D:\Program Files\JetBrains\IntelliJ IDEA 2019.3.原创 2021-05-07 19:30:50 · 4170 阅读 · 1 评论 -
MyBatis入门九:Mybatis数据插入、修改、删除一:插入数据;
本篇博客内容是:向表中插入数据。注:JDBC是java提供的一个操作数据库的API;Mybatis是一个持久层ORM框架,底层是对JDBC的封装。Mybatis对JDBC操作数据库做了一系列优化。即为了实现某个功能,JDBC和Mybatis在实际编码上是不同的,但是Mybatis的背后都是JDBC在做支撑啦。(详细内容可以参考:Mybatis是什么以及Mybatis和JDBC的关系?,能够帮助梳理清楚Mybatis和JDBC的关系)PS:一旦设计数据的写(插入、修改、删除),就必须要涉及到..原创 2021-05-07 16:36:41 · 5109 阅读 · 0 评论 -
MyBatis入门八:多表关联查询二:ResultMap结果映射;(对【MyBatis入门七】的改进,查询结果包括多张表的字段,使用<resultMap>的方式去承载存储查询结果)
在MyBatis入门七:多表关联查询一:获取多表关联查询结果;(查询结果包括多张表的字段,使用Map去承载存储查询结果)中提供了一种解决多表查询结果的方法,即使用Map去承载存储多表查询的结果。但是也提到,这并不是一种最好的解决方案。那么,如果不使用Map,如何使用对象的方式来保存多表关联查询的结果?案例:...原创 2021-05-07 12:06:59 · 1163 阅读 · 2 评论 -
MyBatis入门七:多表关联查询一:获取多表关联查询结果;(查询结果包括多张表的字段,使用Map去承载存储查询结果)
本篇博客的内容很简单:就是当查询结果包括多张表的字段的时候,可以使用Map类承载存储查询结果。目录0.问题描述1.实际演示首先,在goods.xml中增加一个select标签然后实际调用测试:说明:0.问题描述以前的查询都是在一张表上进行查询,自然查询结果可以只是用一个实体类的对象去承载和保存:如下,都是在t_goods一张表上查询的,又因为在写Goods实体类的时候,人为有意让Goods类和t_goods表对应,所以Goods类的属性故意按照t_goods表的字段来...原创 2021-05-06 23:32:15 · 1819 阅读 · 7 评论 -
MyBatis入门六:SQL传参一:SQL传参;(单参数传递【基本包装类型】和多参数传递【Map接口】)
本篇博客主要内容是:(1)SQL语句需要传参的解决办法;(2)只传一个参数时候parameterType设置成对应的包装类型;(3)传多个参数时候parameterType设置Map接口类型;目录1.只传一个参数:以根据id查商品信息为例;(1)在goods.xml中新增一个select标签:(2)外侧实际调用,演示:2.传递多个参数:以查询某个价格范围内的商品信息为例(1)在goods.xml中新增一个select标签:(2)外侧实际调用,演示:SQL查询有时是需要外部传.原创 2021-05-06 13:27:04 · 3255 阅读 · 0 评论 -
MyBatis入门五:MyBatis基本使用三:MyBatisUtils工具类;以查询为例,演示mybatis的一个工作流程;
本篇博客的主要内容是:(1)MyBatisUtils工具类:初始化SqlSessionFactory这个对象;获得SqlSession对象的方法;关闭SqlSession对象的方法;(2)一:MyBatisUtils工具类初始化工具类MyBatisUtils:(1)MyBatisUtils主要职责是:● 帮助我们初始化SqlSessionFactory这个对象;同时让SqlSessionFactory全局唯一;●获得SqlSession对象的方法;●关闭SqlSession对象的方..原创 2021-04-29 22:28:39 · 8089 阅读 · 4 评论 -
MyBatis入门四:MyBatis基本使用二:SqlSessionFactory和SqlSession简单演示;
本篇博客的主要内容是:(1)SqlSessionFactory的演示;(2)SqlSession的演示;(3)本篇博客的内容仅仅是演示这两个类的作用,本篇博客的案例,书写形式都不是实际工作中惯用的书写形式,即本篇博客的目的仅仅是让自己对这俩类有个基本了解。(4)本篇博客内容很简单,快速浏览效果更佳。目录一.SqlSessionFactory和SqlSession简介二.演示案例1.MyBatisTestor:案例代码2.代码说明:(1)代码的基本架构(2)如果某个数据库连接不上,原创 2021-04-29 18:35:42 · 943 阅读 · 0 评论 -
MyBatis入门三:MyBatis基本使用一:MyBatis环境配置;(包括,pom引入Mybatis依赖;IDEA配置数据库;引入演示用SQL;mybatis-config.xml配置文件编写;)
Mybatis是基于JDBC对数据库进行操作的。原创 2021-04-28 23:57:26 · 13954 阅读 · 8 评论 -
IDEA连接MySQL时,报“ Server returns invalid timezone……”(这是在IDEA中设置时区啦,和上篇转载博客的在命令行中设置本质是一样的啦。)
在IDEA中设置。,和上篇转载博客的在命令行中设置本质是一样的啦;本篇博客转载自:IDEA中配置MySQL出现Server returns invalid timezone问题解决方法版权声明:本文为CSDN博主「狭隘」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/ITMan2017/article/details/100601438原因:首先,出现该问题的原因是MySQL驱动jar中的默认时区是转载 2021-04-28 11:22:54 · 206 阅读 · 0 评论 -
IDEA连接MySQL时,报“ Server returns invalid timezone.Go to ‘Advanced‘ tab and set ‘serverTimezone‘ ……”
IDEA连接MySQL时候,报“Server returns invalid timezone.Go to 'Advanced' tab and set 'serverTimezone' propertry manually”;本篇博客转载自:IDEA连接mysql又报错!Server returns invalid timezone. Go to 'Advanced' tab and set 'serverTimezone' prope版权声明:本文为CSDN博主「liuqiker」的原创文章.转载 2021-04-28 11:18:11 · 4098 阅读 · 6 评论 -
单元测试与Junit4
单元测试与Junit4入门级介绍。一.单元测试和JUnit4简介1.单元测试(1)“最小可测试单元”可以认为是一个方法。以前要测试某个方法的代码,需要在main方法中调用这个方法,但这样挺low的;(2)单元测试,就是编写测试用例,来对某个类的某个方法进行校验;(3)JUnit4是Junit的第四代版本;这个单元测试工具会经常用。……………………………………………………2.JUnit4简介二.实例演示1.不使用maven管理组件:将JUnit4引入到工程中.原创 2021-04-27 15:36:14 · 355 阅读 · 0 评论 -
MyBatis入门二:Mybatis介绍二:MyBatis简介;
Mybatis框架简介;目录1.Mybatis简介2.查看Mybatis文档3.Mybatis开发流程1.Mybatis简介(1)持久层:就是通过Dao类和Mybatis框架完成数据的增删改查操作;持久就是指将内存中的数据保存到数据库中,防止重启后数据丢失;(2)把SQL语句保存在xml文件中,SQL语句是单独的维护管理的,程序代码通过Mybatis提供的方法来完成对应SQL的交互工作。这样做的好处是,程序和SQL语句解耦,当某条SQL需要修改的时候,不用修改Java源代码.原创 2021-04-27 13:24:15 · 368 阅读 · 0 评论 -
MyBatis入门一:Mybatis介绍一:框架是什么?
简述什么是框架,作一般性介绍。目录1.现实中的框架2.软件开发中的框架1.现实中的框架先搭建骨架,至于内部的装修和具体细节就因人而异了,住户有不同的装修风格;建筑中的框架是最基础的主体部分,其只决定了整体的结构,并没有决定其中的每一个细节。……………………………………………………主板的主要职责,就是承载其他的硬件。在这块主板上并没有CPU、内存、硬盘,有的只是各种各样的接口,只要CPU、内存、硬盘这些符合主板的接口的标准,把CPU、内存、硬盘插上就能用。这个主板就起.原创 2021-04-27 12:55:38 · 405 阅读 · 0 评论 -
内容概述
MyBatis入门部分:Mybatis介绍;JUnit4单元测试;Mybatis基本使用;SQL传参;查询;插入、修改与删除;SQL攻击;MyBatis工作流程。MyBatis进阶部分:MyBatis日志与动态SQL;MyBatis二级缓存;OneToMany对象关联查询;PageHelper分页;C3P0连接池;批处理;MyBatis注解。...原创 2021-04-27 08:53:28 · 164 阅读 · 0 评论