MyBatis

mybatis和hibernate的特点

本秂侑毒 提交于 2020-02-23 07:28:59
第一方面:开发速度的对比 就开发速度而言,Hibernate的真正掌握要比Mybatis来得难些。Mybatis框架相对简单很容易上手,但也相对简陋些。个人觉得要用好Mybatis还是首先要先理解好Hibernate。 比起两者的开发速度,不仅仅要考虑到两者的特性及性能,更要根据项目需求去考虑究竟哪一个更适合项目开发,比如:一个项目中用到的复杂查询基本没有,就是简单的增删改查,这样选择hibernate效率就很快了,因为基本的sql语句已经被封装好了,根本不需要你去写sql语句,这就节省了大量的时间,但是对于一个大型项目,复杂语句较多,这样再去选择hibernate就不是一个太好的选择,选择 mybatis 就会加快许多,而且语句的管理也比较方便。 第二方面:开发工作量的对比 Hibernate和MyBatis都有相应的代码生成工具。可以生成简单基本的DAO层方法。针对高级查询,Mybatis需要手动编写SQL语句,以及ResultMap。而Hibernate有良好的映射机制,开发者无需关心SQL的生成与结果映射,可以更专注于业务流程。 第三方面:sql优化方面 Hibernate的查询会将表中的所有字段查询出来,这一点会有性能消耗。Hibernate也可以自己写SQL来指定需要查询的字段,但这样就破坏了Hibernate开发的简洁性。而Mybatis的SQL是手动编写的

Mybatis(二)

岁酱吖の 提交于 2020-02-23 00:12:24
动态sql 查询的时候如果某些条件没带可能sql拼装会有问题,解决: 1.where 1=1 2.mybatis使用where标签将所有的查询条件包括在内,mybatis会将where标签中拼装的sql 多出来的 and 或 or 去掉 where只会去掉第一个多出来的and和or,后面多出来的and和or不能解决 //动态sql标签 < if test = " " > </ if > //prefix:前缀,trim标签体中是整个字符串拼串后的结果 //prefixOverrides:前缀覆盖,去掉整个字符串前面多余的字符 //suffix:后缀,给拼串后的整个字符串加一个后缀 //suffixOverrides:后缀覆盖,去掉整个字符串后面多余的字符 < trim prefix = " where " prefixOverrides = " " suffix = " " suffixOverrides = " " > </ trim > < choose > < when test = " " > </ when > < otherwise > </ otherwise > </ choose > < foreach > </ foreach > //可用来批量保存 mybatis默认还有两个内置参数 -parameter:代表整个参数 单个参数:

springboot+mybatis+redis学习(一)

喜夏-厌秋 提交于 2020-02-22 22:55:29
(PS:完整代码地址: https://github.com/WenMuJ/springboot 有兴趣的可以看看) 一.整合springboot+mybatis(idea版本) 1.创建springboot项目 选择spring initializr,点击next,输入工程名称等信息,下一步,选择相应的jar包 下一步之后,选择自己的工作空间地址。最后点击finish。至此,项目搭建第一步完成了。 下面附上pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId>

Jquery 数组操作

陌路散爱 提交于 2020-02-22 21:01:27
04.AdminLTE的基本介绍 05.SSM整合案例的基本介绍 06.产品操作 07.订单操作 08.用户操作 09.权限控制 10.权限关联与控制 11.AOP日志 06.产品操作 SSM 环境搭建与产品操作 1.数据库与表结构介绍 PLSQL Developer 13 是一个集成开发环境,专门面向Oracle数据库存储程序单元的开发PL/SQL Developer侧重于易用性、代码品质和生产力 。 连接数据库的配置 解决中文??乱码 在maven bin目录下运行以下命令: mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc14 -Dversion=10.2.0.1.0 -Dpackaging=jar -Dfile=D:\mnt\ojdbc14-10.2.0.1.0.jar 以上地址信息部分,请根据本地jar包的信息自行修改。 创建用户与授权 数据库我们使用 Oracle -- 用户名 ssm08 -- 登录密码 itheima -- Create the user create user SSM08 identified by itheima; -- Grant/Revoke role privileges grant connect to SSM08; grant resource to

还在用逆向工程?太Low了,试试通用Mapper吧!

房东的猫 提交于 2020-02-22 15:53:53
什么是通用Mapper? 通用mapper 可以极大的方便开发人员进行ORM,提供极其方便的单表增删改查。 什么是通用mapper,一句话简单说,它就是个辅助mybatis极简单表开发的组件。它不是为了替代mybatis,而是让mybatis的开发更方便。 可以按照自己的需要选择通用方法,还能很方便的开发自己的通用方法。 为什么要用通用Mapper? 原生Mybatis的痛点 1、mapper.xml文件里有大量的sql,当数据库表字段变动,配置文件就要修改 2、需要自己实现sql分页,select * from table where . . . limit 1,3 自己手写分页,除了传参page、pageSize,还需要返回条目总数count。 3、数据库可移植性差:如果项目更换数据库,比如oracle-->mysql,mapper.xml中的sql要重新写,因为Oracle的PLSQL 和mysql 支持的函数是不同的。 4、生成的代码量过大。 5、批量操作,批量插入,批量更新,需要自写。 如何使用通用Mapper? 1、导入依赖/jar包 通用Mapper是配合MyBatis使用的,请确保你已经是MyBatis的环境。 <!-- 通用Mapper --> <dependency> <groupId>com.github.abel533</groupId>

阿里云个人服务器搭建项目笔记零:基础项目构建流程

隐身守侯 提交于 2020-02-22 14:04:15
应用springboot2,mybaits3开发的前后端分离基础商城项目 tips:项目我 已经部署到了云端服务器,欢迎给本菜鸡提供宝贵意见~ 注册入口: 点击直接进入注册 :http://47.115.19.41/resources/getotp.html 本篇README所有内容仅包括基础部分的构建,项目优化的历程放在了我的博客内,不会再到README中更新。 项目使用项目根据业务的需要分为用户模块,商品模块,交易模块,以及秒杀模块,如要使用本项目, 需要的数据库表可以根据mapper文件里面的字段来手动建立。 项目分层 1.前端UI 2.接入层controller(对应view object,即vo)前端返回的是定义好的通用返回对象,若系统正常则返回vo,有异常则返回异常信息和异常状态码。 3.业务层service(这里的业务层对象根据阿里巴巴的规范命名为了business object,即XxBO)包括用户service,商品service,交易下单service,以及秒杀service。 4.数据层dao(对应data object,即do,每一个属性和数据库表一一对应,并且使用mybatis逆向插件自动生成)使用事务保证了数据的一致性。 以下是按顺序记录的基本开发流程 一.技术选型 springboot2,mysql,druid连接池

MyBatis动态sql之foreach标签 构建 in 语句

不打扰是莪最后的温柔 提交于 2020-02-21 20:34:22
<foreach> 元素主要用在构建 in 条件中,它可以在 SQL 语句中迭代一个集合。 <foreach> 元素的属性主要有 item、index、collection、open、separator、close。 item 表示集合中每一个元素进行迭代时的别名。 index 指定一个名字,用于表示在迭代过程中每次迭代到的位置。 一般没什么用。 open 表示该语句以什么开始。 一般没什么用,还不是直接用 ( 来的方便直接。 separator 表示在每次进行迭代之间以什么符号作为分隔符。 close 表示以什么结束。 一般没什么用,还不是直接用 ) 来的方便直接。 在使用 <foreach> 元素时,最关键、最容易出错的是 collection 属性,该属性是必选的,但在不同情况下该属性的值是不一样的,主要有以下 3 种情况: 如果传入的是单参数且参数类型是一个 List,collection 属性值为 list。 或者直接用 @Param("xxx") ,然后collection的值为:xxx。这种方式更直接,便于理解。 如果传入的是单参数且参数类型是一个 array 数组,collection 的属性值为 array。 或者直接用 @Param("xxx") ,然后collection的值为:xxx。这种方式更直接,便于理解。 如果传入的参数是多个,需要把它们封装成一个

1.SSM项目整合所有配置详解

元气小坏坏 提交于 2020-02-21 19:25:08
转载:https://blog.kuangstudy.com/index.php/archives/487/ 一.SSM项目整合所有配置详解 1.规划: 环境要求:IDEA,MySQL5.7.19,Tomcat 9,Maven 3.6,IDEA插件Lombok 开发流程从后向前:项目搭建 --> MySQL --> MyBatis --> Spring --> SpringMVC --> web.xml 搭建项目目录: ustc.wzh.pojo:实体类(对应数据库的数据表) ustc.wzh.dao:数据操作层(对数据库CRUD) ustc.wzh.service:业务层 ustc.wzh.controller:控制层 配置文件也是从后向前: 项目搭建: pom.xml中导入jar包 pom.xml中设置Maven资源过滤设置 MySQL: 搭建数据库和数据表 MyBatis: mybatis-config.xml:(配置,连接,绑定,操作数据库) 用于配置数据源(现在交给Spring管理) 数据库相关信息 数据关联:数据表与pojo层关联 数据操作:与dao层Mapper.xml关联CRUD操作 database.properties:用于配置数据库连接的用户名和密码等 Spring: applicationContext.xml:Spring配置整合文件 用于整合spring

springboot mybatis整合

孤者浪人 提交于 2020-02-21 18:22:51
一、创建springboot项目 略、 二、增加需要的插件依赖 <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.1</version> </dependency> <!-- 根据使用的数据库选择相应依赖--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.19</version> <scope>runtime</scope> </dependency> <!-- mybatis自动生产功能需要的依赖--> <dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>1.4.0</version> </dependency> <!-- mybatis自动生产功能需要的插件--> <plugin> <groupId>org.mybatis.generator</groupId>

Mybatis——动态SQL语句!

不问归期 提交于 2020-02-21 07:25:28
含义 动态的SQL语句,就是指在运行的时候,根据Mapper.xml中的语句,来决定方法传入参数的使用。 使用 <if test=""></if>标签 Mapper.xml中的配置 if 判断 参数传入的值,判断是否可以使用,再执行SQL语句, 缺点 如何传入的值分别是null,1时or 符号不会消失,这样sql语句识别不出来。 < select id = "queryUserByUser" resultType = "com.atguigu.pojo.User" parameterType = "com.atguigu.pojo.User" > select `id` , `last_name` lastName , `sex` from t_user where < if test = "lastName!=null" > last_name = # { lastName } < / if > < if test = "sex==0||sex==1" > or sex = # { sex } < / if > < / select > <where ></where>标签 Mapper.xml中的配置where能有效帮助我们,添加和去除查询条件 前面 的关键字。 缺点 不能去除查询条件 后面 的多余的关键。 < select id = "queryUserByUser"