MyBatis

基于JAVA-SSM框架的B/S微博系统的设计与实现

空扰寡人 提交于 2020-04-13 11:43:17
【今日推荐】:为什么一到面试就懵逼!>>> 架构概述 B/S架构(Browser/Server,浏览器/服务器模式):是一种通过将浏览器作为客户端的网络结构模式,利用已经逐步成熟的web浏览器技术,结合浏览器的多种功能,使用浏览器来作为早先C/S(Client/Serve)架构下复杂的客户端,使用C/S架构使得用户的客户端得到统一,将软件系统的核心功能集中在服务器端,系统的升级和维护更加简单,开发人员只需要管理服务器就可以做到对如软件系统的更新和维护,B/S架构所带来的众多优点使得它成为将来信息化发展的主流方向。 MVC模式:即模型(Model),视图(View),控制器(Controller)是一种软件开发的设计模式,Model主要负责分离出来的业务逻辑的数据交互,View主要负责数据的提交和展示,Controller主要负责获取请求和请求的转发。 SSM框架(SpringMVC+Spring+Mybatis):由这三个开源框架组成的web项目的框架,是标准的MVC模式,spring MVC负责请求的转发和视图管理,spring实现业务对象管理和事务控制,mybatis作为持久化引擎,相对于早先流行的SSH(Struts+Spring+Hibernate)框架来说,SSM作为轻量级框架更适合开发中小型项目。 关键技术简介 前端技术: 1.JSP(Java Server Pages

Redis+Nginx+设计模式+Spring全家桶+SQL+Dubbo技术好文精选整理

一个人想着一个人 提交于 2020-04-12 19:17:57
最近花了很长的时间去搜罗Java核心技术好文,我把每个Java核心技术的优选文章都整理成了一个又一个的文档。昨天也是终于全部整理好了,今天就把这些东西分享给老铁们,也能为老铁们省去不少麻烦,想学什么技能了,遇到哪方面的问题了 直接打开文档学一学就好了。不多bb了,直接上干货! 所有技术好文精选文档都整理到网盘了。 领取方式:转发+关注,然后加VX【tkzl6666】 即可获得免费领取方式! 一、Redis技术好文精选整理(共19篇) Redis+Tomcat+Nginx集群实现Session共享 Redis 到底是怎么实现「附近的人」这个功能的呢 ? Redis持久化的几种方式 - RDB深入解析 Spring Boot + Redis + 注解 + 拦截器来实现接口幂等性校验 Spring Boot+Redis 分布式锁:模拟抢单 Spring Boot 整合 Redis 一文掌握 Redis 常用知识点 - 图文结合 一文梳理 Redis 基础 为什么 Redis 单线程却能支撑高并发? 使用 Redis 搭建电商秒杀系统 如何⽤用Redis 统计独立用户访问量 实战 | Kafka + Flink + Redis 的电商大屏实时计算案 干货:终于明白 Redis 为什么这么快了! 我和面试官的博弈:Redis 篇 最强 Java Redis 客户端 来,手撸一个简版

MyBatis+Oracle时出现的错误: Method oracle/jdbc/driver/OracleResultSetImpl.isClosed()Z is abstract

回眸只為那壹抹淺笑 提交于 2020-04-12 13:47:05
今天在看MyBatis时,准备写一个Demo来验证看完TypHandler源码后的想法,可是demo刚一跑起来就报下面的错了。 随手在网上搜了一遍,都说是版本不匹配;就是不明白怎么个不匹配法;可是好奇心驱使我就想看看怎么个不匹配法。 先把我自己的代码贴在这。 maven依赖: 1 <dependency> 2 <groupId>mysql</groupId> 3 <artifactId>mysql-connector-java</artifactId> 4 <version>8.0.18</version> 5 </dependency> 6 7 <dependency> 8 <groupId>com.oracle</groupId> 9 <artifactId>ojdbc14</artifactId> 10 <version>10.2.0.4.0</version> 11 </dependency> 12 <!--<dependency> 13 <groupId>com.oracle</groupId> 14 <artifactId>ojdbc6</artifactId> 15 <version>1.0</version> 16 </dependency>--> 17 18 <dependency> 19 <groupId>org.mybatis</groupId> 20

MyBatis+Oracle时出现的错误: Method oracle/jdbc/driver/OracleResultSetImpl.isClosed()Z is abstract

痴心易碎 提交于 2020-04-12 13:39:15
今天在看MyBatis时,准备写一个Demo来验证看完TypHandler源码后的想法,可是demo刚一跑起来就报下面的错了。 随手在网上搜了一遍,都说是版本不匹配;就是不明白怎么个不匹配法;可是好奇心驱使我就想看看怎么个不匹配法。 先把我自己的代码贴在这。 maven依赖: 1 <dependency> 2 <groupId>mysql</groupId> 3 <artifactId>mysql-connector-java</artifactId> 4 <version>8.0.18</version> 5 </dependency> 6 7 <dependency> 8 <groupId>com.oracle</groupId> 9 <artifactId>ojdbc14</artifactId> 10 <version>10.2.0.4.0</version> 11 </dependency> 12 <!--<dependency> 13 <groupId>com.oracle</groupId> 14 <artifactId>ojdbc6</artifactId> 15 <version>1.0</version> 16 </dependency>--> 17 18 <dependency> 19 <groupId>org.mybatis</groupId> 20

on duplicate key update 的用法说明(解决批量操作数据,有就更新,没有就新增)mybatis批量操作数据更新和添加

早过忘川 提交于 2020-04-12 13:32:50
项目用的ORM框架是用springdatajpa来做的,有些批量数据操作的话,用这个效率太低,所以用mybatis自己写sql优化一下。 一般情况,我们肯定是先查询,有就修改,没有就添加,这样的话,单个操作还好,如果是大量数据的话,每次都需要先查后改(如果用springdatajpa的话,添加之前还得查一遍),太消耗资源了。 那么mysql有没有解决的办法呢?当然是有的,我查了一些资料,有两种办法,一种是使用使用replace into ,还有一种是on duplicate key update来解决,我先来演示一下这两种办法的区别。 首先创建一个表(我设置的username列唯一,用户名不可重复) CREATE TABLE user_table( id INT PRIMARY KEY AUTO_INCREMENT, username VARCHAR( 10 ) UNIQUE KEY, address VARCHAR( 10 ) ) 添加一条数据 INSERT INTO user_table (id,username,address) VALUE (NULL,'胡俊杰','北京') 目的:先查询数据是否存在,再修改(用一条语句实现),胡俊杰不在北京了,跑去黑龙江了 REPLACE INTO user_table(id,username,address) VALUE (NULL,

EF 太重,MyBatis 太轻,ORM 框架到底怎么选 ?

早过忘川 提交于 2020-04-12 12:42:16
以 EF 为代表的基于 Linq 的 ORM 框架总是 很重 。 他们的功能早已超出了一个 ORM 的范畴, ORM 是 Object Relational Mapping ,从名字上看,其初衷是将 数据库中的字段 与 实体中的属性 进行关联映射, 但是 重型 ORM 框架 做了很多 额外 的事情 : 数据库连接 数据库事务包装 实体缓存 实体关联管理 数据库表同步 这些功能很好, 强大的功能往往是死板的, 我们无法编写那些灵活的 Sql 去实现某些简便的操作。 以 MyBatis.NET、Dapper 为代表的, 则是基于开发者自行编写 Sql 的 ORM 框架又 太轻。 因为是自行编写 Sql , 所以他们非常灵活, 但是用起来很 痛苦 。 哪怕是一个简单的 Insert ,Update 也得写 Sql, 而且还无法摆脱 数据库 兼容的问题。 你所编写的那些 Sql 在大部分情况下,只能用于一种 数据库 今天要向大家介绍一个 轻量级、不用写 Sql、可以兼容多数据库 的 ORM 框架 Reface.NPI 什么是 NPI NPI 全名 .Net Persistent Interface 。 这是一个利用 interface 实现的轻量级 ORM 框架, 它与市面上大多数的 ORM 框架不同,它不基于 Linq 进行数据库操作,而是基于 Method Name 。 例如

EF 太重,MyBatis 太轻,ORM 框架到底怎么选 ?

不羁岁月 提交于 2020-04-12 12:24:20
以 EF 为代表的基于 Linq 的 ORM 框架总是 很重 。 他们的功能早已超出了一个 ORM 的范畴, ORM 是 Object Relational Mapping ,从名字上看,其初衷是将 数据库中的字段 与 实体中的属性 进行关联映射, 但是 重型 ORM 框架 做了很多 额外 的事情 : 数据库连接 数据库事务包装 实体缓存 实体关联管理 数据库表同步 这些功能很好, 强大的功能往往是死板的, 我们无法编写那些灵活的 Sql 去实现某些简便的操作。 以 MyBatis.NET、Dapper 为代表的, 则是基于开发者自行编写 Sql 的 ORM 框架又 太轻。 因为是自行编写 Sql , 所以他们非常灵活, 但是用起来很 痛苦 。 哪怕是一个简单的 Insert ,Update 也得写 Sql, 而且还无法摆脱 数据库 兼容的问题。 你所编写的那些 Sql 在大部分情况下,只能用于一种 数据库 今天要向大家介绍一个 轻量级、不用写 Sql、可以兼容多数据库 的 ORM 框架 Reface.NPI 什么是 NPI NPI 全名 .Net Persistent Interface 。 这是一个利用 interface 实现的轻量级 ORM 框架, 它与市面上大多数的 ORM 框架不同,它不基于 Linq 进行数据库操作,而是基于 Method Name 。 例如

Spring入门案例 idea创建Spring项目

二次信任 提交于 2020-04-11 19:57:37
spring入门案例 idea创建spring项目 Spring介绍 Spring概述 Spring是一个开源框架,Spring是2003年兴起的轻量级java开发框架,由Rod Johnson 在其著作 Expert One-On-One J2EE Development and Design 中阐述的部分理念和原形衍生而来。它是为了解决企业级开发的复杂性而创建的。Spring使用基本的javaBaen来完成以前只可能由EJB完成的事情,然而Spring的用途不仅限于服务器端的开发,从简单性、可测试性、低耦合的角度而言任何java应用都可以在spring中受益。 简单的来说Spring就是轻量级的控制反转(IOC)和面向切面(AOP)的容器框架。 Spring的好处 方便解耦,简化开发 Spring就是一个大工厂,专门负责生成Bean,可将所有对象,和依赖关系维护由Spring管理。 AOP编程的支持 Spring提供面向切面编程,可以方便的实现对程序进行拦截、运行监控等功能。 声明事务的支持 只需要通过配置就可以对事务进行管理,而无需手动编程。 方便程序的测试 Spring对junit支持,可以通过注解方便的测试Spring程序。 方便集成各种优秀框架 Spring不排斥各种优秀的框架,其内部提供了对各种优秀框架的支持,比如Struts2、Hibernate、MyBatis等。

MyBatis

喜欢而已 提交于 2020-04-11 17:09:48
MyBatis- 第三章 入参的类型是对象 1. 新增的参数是对象 2. 空值的处理,占位符 字段,jdbcType=VARCHAR 字符串 字段,jdbcType=DATE 日期 字段,jdbcType=INTEGER 数值 3. 插入全部值时,可以不处理空值 log4j日志记录 可以记录不同级别的日志信息,以备排错和后续信息参考 1. 配置log4j.properties配置文件,放置在根目录下 日志全局设置:log4j.rootLogger=level ,console,stdout 日志等级level: DEBUG< INFO< WARN< ERROR 从低到高 变量console - 输出到console控制台 变量stdout – 输出到本地文件 2. 添加jar包 3. 正常启动 MyBatis缓存机制 1. 一级缓存 一级缓存基于MyBatis自带的PerpetualCache,是HashMap本地缓存,作用范围为session内,当session刷新或关闭后,该session中的所有cache就被清空。 2. 二级缓存 二级缓存就是全局缓存,它超出session的范围之外,可以被所有SqlSession共享 配置步骤: 1. 在mybatis-config.xml中设置 注意顺序,在文件开始位置 2. 在Mapper.xml启用缓存功能 3.

MyBatis

倾然丶 夕夏残阳落幕 提交于 2020-04-11 17:09:18
MyBatis- 第四章 表关联 1. 准备表teacher 教师表 列名 类型 备注 id number 主键 name varchar2(32) 名称 profession varchar2(32) 专业 2. 准备表student 学生表 列名 类型 备注 stu_id number 主键 stu_name varchar2(32) 姓名 stu_age number(3) 年龄 stu_sex varchar2(3) 性别 tea_id number 外键-教师ID stu_create_date date 时间戳 3. 准备表Subject 学科表 列名 类型 备注 sub_id number 主键 sub_name varchar2(32) 学科名 stu_id number 外键-学生ID sub_create_date date 时间戳 association 一对一 学生表 对 教师表 1. 实体类添加对应对象 – 教师 2. Mapper添加对应结果集映射 collection 一对多 学生表 对 学科表 1. 实体类添加对应集合对象 – 学科 2. Mapper添加对应结果集映射 使用ResultMap实现结果多表映射 1. 设置返回值类型 resultType="java.util.Map",SQL结果装入Map集合 2.