Mybatis分页
概览本文为基于mybatis和MySql进行分页功能的实现,一共四种方式:
数组分页
sql语句分页
拦截器分页
RowBounds分页
具体实现数组分页原理:进行数据库查询操作时,获取到数据库中所有满足条件的记录,保存在应用的临时数组中,再通过List的subList方法,获取到满足条件的所有记录
1List<E> subList(int fromIndex, int toIndex);
即从list中截取从fromInde [(page-1)*size] 到toIndex [fromIndex+size] 的数据,这里不介绍具体实现。
缺点:数据库查询并返回所有的数据,而我们需要的只是极少数符合要求的数据。当数据量少时,还可以接受。当数据库数据量过大时,每次查询对数据库和程序的性能都会产生极大的影响。
sql分页使用limit语句直接在数据库语言中只检索符合条件的记录,不需要在通过程序对其作处理。
1select * from studeng LIMIT [<offset>,] <row count>
offset:偏移量,(page- ...
MyBatis
概念MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。Mybatis它是个高轻量级的半自动的持久层框架,它更加关注原生sql的编写。所以在实际项目中mybatis可以实现代码和sql的完全解耦。Mybatis还提供了强大的基于OGNL的动态sql语句编写。它支持定制化 SQL、存储过程以及高级映射。所以深受广大程序员的喜爱。
工作原理工作流程如下
OR映射实体对象采用的是面向对象技术,它表达实体的关系是用关联、继承。而RDBMS 是遵循关系的范式理论构建的二维表,主要采用主键和外键的关联方式。因此,对象模型与数据库模型是不一致的,需要在两者之间进行变换即映射。 映射的完成可以按照规则进行人工映射,可以从O映射到R,反之亦然。可以借助开发工具的正、反向工程完成映射。
Mybatis通过映射将对象的属性信息通过一种规范与数据库里的信息实现一一对应。例如:查询结果中的字段名要和类属性名一致,才能将字段映射到类中 ...
MyBatis Generator
Why生成pojo,mapper.java.mapper.xml文件(包含基础增删改查),提交工作效率,解决繁琐的消逝
使用方法1. pom.xml导入插件1234567891011<dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>1.4.0</version></dependency><!-- Mybatis Dynamic Sql 依赖,可以不添加 --><!-- <dependency> <groupId>org.mybatis.dynamic-sql</groupId> <artifactId>mybatis-dynamic-sql</artifactId> <version>1.1.4&l ...
MyBatis "#" 和 "$" 区别
1:概念Mybatis中sql语句共有三种执行方式
选项
说明
STATEMENT
直接操作sql,不进行预编译,获取数据:$–Statement
PREPARED
预处理,参数,进行预编译,获取数据:#–PreparedStatement
CALLABLE
执行存储过程—CallableStatement
MyBatis默认使用PREPARED方式,即#{}。
传入的参数在SQL中显示不同 使用${}方式传入的参数,mybatis不会对它进行特殊处理,而使用#{}传进来的参数,mybatis默认会将其当成字符串。可能在赋值给如id=#{id}和id=${id}看不出多大区别,但是作为表名或字段参数时可以明显看出, 例:
1234selec * from #{table};- 解析后为:select * from "test";select * from ${table};- 解析后为:select ...