今天我们来分享一下操作数据库常用的ORM框架-mybatis,其实整理这篇文章是自己想写点内容进来,因为原来写的程序代码都放在了gitHub上面,自己之前写的文章大部分都是java的一些内容,没有涉及到框架的内容。
1. mybatis简介:(需要在详细一点可面向百度) 1.1 mybatis本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation迁移到了google code,并且改名为MyBatis。2013年11月迁移到Github。 mybatis是一个基于Java的持久层框架(半自动),主要包括SQL Maps和Data Access Objects(DAO) ORM:Object Relational Mapping (对象与关系型数据库
SqlSessionFactory是MyBatis框架中十分重要的对象,它是单个数据库映射关系经过编译后的内存镜像,其主要作用是创建SqlSession。
http://blog.csdn.net/witsmakemen/article/details/46913425
其实很早的时候,就在项目中有使用到shiro做登陆认证,直到今天才又想起来这茬,自己抽空搭了一个spring+springmvc+mybatis和shiro进行集成的种子项目,当然里面还有很简单的测试。本文将讲述在maven下如何进行集成,希望对你有所帮助,喜欢请推荐。至于shiro相关的,最近也会写几篇介绍的,希望能够有一个主观的了解。
github地址https://github.com/heng1234/mybatis_plus
比如我们在拿到一个 List 集合之后,要对这个集合进行判空操作,以前我一直是这样写的:
nested exception is org.apache.ibatis.exceptions.PersistenceException: \n### Error querying database. Cause: java.lang.UnsupportedOperationException\n### The error may exist in class path resource [conf/mapper/com/ppdai/cbd/thirdparty/userthirddata/NoInsertColumnsQueryMapper.xml]\n### The error may involve com.ppdai.cbd.thirdparty.dao.mapper.userthirddata.NoInsertColumnsMapper.selectDataCutFill\n### The error occurred while handling results\n### SQL: SELECT * from no_insertcolumns WHERE updatestatus = 0;\n### Cause: java.lang.UnsupportedOperationException
上周突然在部署一点很简单的新业务之后,上线没多久突然OOM,大部分接口访问超时,甚至有的直接失败,刚开始以为是查询了什么了大数据导致的,结果看了下CPU,300%。
OGNL是个什么东西?很多刚入门Java的同学会有点陌生。但是在Structs流行的时代OGNL可是必会的数据渲染技术。它全称Object Graph Navigation Language,作用是降低对数据层访问的难度,它拥有类型转换、访问对象方法、操作集合对象等功能。目前已经很少通过OGNL来访问数据层了,写这篇文章主要是因为目前国内大部分的ORM框架是Mybatis,而Mybatis中的动态SQL技术运用了OGNL。
在上文 Apache Shiro权限框架理论介绍 中,我们介绍了Apache Shiro的基础理论知识。本文我们将在 SpringBoot 中集成Apache Shiro,完成一些简单的Case开发。
怎么说呢,有一种年度总结之前赶进度的感jio,盛产似那啥了突然就,昨天先是改了需求,再报了2个异常,又紧接着报了个故障,没把我累死,对了,这是我入职之后第一次被报故障,当然了,最后我没让他成为故障,对了,故障解决后,把我从故障群踢了(因为解决了就解散群),从报障到确认为非故障15分钟。好了进入正题,处理下bug。
2. mybatis与hibernate的区别:两者均为ORM框架,但也有一些不同
mybatis在持久层框架中还是比较火的,一般项目都是基于ssm。虽然mybatis可以直接在xml中通过SQL语句操作数据库,很是灵活。但正其操作都要通过SQL语句进行,就必须写大量的xml文件,很是麻烦。mybatis-plus就很好的解决了这个问题。
spring-boot与druid、mybatis集成(包括pageHelper分页插件), 要添加以下几个依赖项: compile('mysql:mysql-connector-java:6.0.5') compile('tk.mybatis:mapper-spring-boot-starter:1.1.1') compile('org.mybatis.spring.boot:mybatis-spring-boot-starter:1.3.0') compile('com.
当我们使用在mapper.xml文件中写sql时,in占位符过多,会导致报下面的异常:
前言:前几天学习了SpringSecurity安全框架,这几天又接着学习shiro框架,这两者框架都是同一类产品,解决同一类问题,但是在官方推荐使用Shiro框架,因为它简单易学,所以这里有时间学习了以下。
MyBatis-Plus与通用Mapper的优点类似。参考MyBatis & 通用Mapper
项目中经常会使用分页查询,有次使用了RowBounds进行分页,因为很多场景或网上也看到很多这样的写法,所以我也在项目中使用了该类进行分页。但是有次线上却抛了异常,由此引发了对RowBounds原理的探究。
在实际开发中,很多数据都是树形结构,例如:地区、页面上的菜单、上下级关系的组织等等,这时就需要我们从数据源中读取到数据,通过某些方式拼成树形结构 然后再给前端展示。对于一些不经常变化且使用频繁的数据,可以考虑将拼好的树形结构数据放入缓存,每次用的时候直接读取出来就可以使用。
@MapperScan(basePackages = "com.kaven.mybatisplus.dao")这个一定要加上。
Maven没有在build中配置resource,导致资源读取不到,因为正常情况下,xml配置文件应该放在resources目录下,而Maven约定大于配置,所以可能读取不到
九,由于这里面用到了分页查询的实现,所以整合了pageHelper的jar和配置信息。
MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生
大概意思是:日期在转换时 格式错误 String类型无法转换成Util.Date类型
本文我们主要实战Mybatis官方的代码生成器:Mybatis Generator(MBG),掌握它以后,可以简化大部分手写代码,我们只需要写复杂逻辑代码!
MyBatis-Puls在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
继上一篇《面试时被问到单例模式,怎么回答才能让面试官眼前一亮?》之后,我打算对springboot的部分功能做一下介绍。因为现在springboot使用的人越来越多,已经成了java行业主流的框架。
Mybatis系列目标:从入门开始开始掌握一个高级开发所需要的Mybatis技能。
逻辑删除就是对要被删除的数据打上一个删除标记,在逻辑上,数据是被删除了,但数据本身依然存在!而物理删除则是把数据从介质上彻底删除掉。
问题描述: 腾讯云上 centos7 安装的 mysql 5.7.27,SpringBoot 使用 Hikaricp 连接池连接 MySQL。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
事务传播机制可参考:https://blog.csdn.net/yuanlaishini2010/article/details/45792069
根据不同的要求,我们只需要对ParameterHandler和ResultSetHandler进行切入。定义特定注解,在切入时需要检查字段中是否包含注解来是否加解密。
程序在编译过程中找不到对应的配置文件就会报错,但是对应的配置文件却是的的确确存在于项目中的,可是在生成的测试结果target对应目录下找不到对应配置文件,这是因为Maven项目中默认资源配置目录是src/main/resource,而实际有些配置文件会放在src/main/java目录下,就会导致项目编译时导出不了这些配置文件。所以我们需要手动配置资源过滤,使src/main/java的”.properties“文件和”.xml“文件可被导出到测试结果的target文件夹中。
日常我们在存储数据的时候,经常会碰到一些敏感性的数据,比如用户的身份证号和手机号等。这些数据一般是不允许我们在数据库中做明文存储的,这就需要我们在存储字段的时候,对这些字段做加密操作,同时在读取出来的时候,也要对相应字段做解密操作。
MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
对Nginx域名转发做了个压测,结果不大理想,jmeter哗哗的报错,nginx连接全是超时,tps波动特别大。如下图
在原来项目中使用Mybaties plus 一开始没有问题, 通过逆向工程生成的代码也可以使用. 当数据库增加一列之后启动没问题, 但是在执行SQL的时候报错, 详细信息贴在下面
经查,是因为我用mybatis plus,要求用mybatis3.4.6,而activiti用的是mybatis3.4.2,两边有冲突,直接排除activitiv那个即好
本质上,读写分离,仅仅是多数据源的一个场景,从节点是只提供读操作的数据源。所以只要实现了多数据源的功能,也就能够提供读写分离。
我们在上一篇文章mybatis-series项目中创建另外一个模块chat02,过程如下:
SSM 框架是 (Spring+SpringMVC+MyBatis)的缩写,这个框架是继 SSH(Spring+Struts+Hibernate)之后,目前比较主流的 Java EE 企业级框架,适合搭建各种中小型的企业级应用系统。由于之前也没有Java Web相关的工作经验以及后台系统开发经验,更别说应用框架来开发应用系统了。通过各方面的了解,SSM框架作为轻量级应用框架,速度快,效率高,最主要的还是学习成本更低。这样我们能更快地学习并应用到我们的项目当中!所以,追踪器的项目选择了 SSM这套框架作为我们的后台开发框架!以下,便详细的说明各个框架的优缺点以及 框架的具体搭建步骤
我们无需手动编写 实体类、DAO、XML 配置文件,只需要使用 MyBatis 提供的一个 Maven 插件就可以自动生成所需的各种文件便能够满足基本的业务需求,如果业务比较复杂只需要修改相关文件即可。
最近在看公司的一些项目的时候发现有的项目里面的 mybatis 是基于注解开发的。而我个人的习惯是基于 xml 文件开发。
有时候我们需要快速启动一些项目,但是环境往往折腾了好久,因此弄一个可以重用的快速搭建的教程,docker简直就是这方面的神器,Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。
方法一:最简单直接的方式就是对代码中所有涉及到敏感数据的接口在查询和插入时进行加解密 方法二:方法一会对代码入侵很大,需要考虑到所有涉及到的接口,工作量极大,并且可能出现组员协作时没有考虑到对数据加解密的问题。最后决定采用mybatis的插件在mybatis SQL执行和查询结果填充操作上进行切入。上层业务调用不再需要考虑数据的加解密问题同时也保证了数据的脱敏
![image](https://user-images.githubusercontent.com/22151420/40716284-07d07a7e-643b-11e8-8a15-3e8448bc0e5f.png)
领取专属 10元无门槛券
手把手带您无忧上云