mybatis
Moss Huang
这个作者很懒,什么都没留下…
展开
-
Mybatis插入记录获取返回主键的配置方法
方法共有2种:1. 使用JDBC方式返回主键自增的值在配置insert时使用useGeneratedKeys属性,这种方法只适用于支持自增主键的数据库,如mysql,对于不支持自增主键的数据库不适用,如oracle。useGeneratedKeys设为true后,Mybatis会使用JDBC的getGeneratedKeys方法来取得由数据库内部生成的主键。获得主键的值后赋给keyProper...原创 2018-10-01 23:47:01 · 5519 阅读 · 0 评论 -
【笔记】Mybatis高级查询(六)--鉴别器discrimiator的使用
<discrimiator>鉴别器标签用来处理不同数据类型执行不同操作的。与java的switch语句相似。有以下属性:column:该属性用于设置要进行鉴别比较值的列。javaType:该属性用于指定列的数据类型,保证使用相同的java类型来比较值。<discrimiator>标签可以有1个或多个&a原创 2018-10-24 21:15:59 · 553 阅读 · 0 评论 -
【笔记】Mybatis高级查询(七)--存储过程调用
以下例子展示Mybatis存储过程调用,与普通查询基本一样,只是在配置映射时要加上statementType=“CALLABLE”,由于存储过程方式不支持Mybatis的二级缓存,所以要加上useCache=“false”。在存储过程中使用参数时,除了配置属性名外,还需要指定mode参数,可选值为IN、OUT、INOUT三种,入参用IN,出参用OUT,OUT模式必须指定jdbcType。另外在...原创 2018-10-24 23:09:44 · 975 阅读 · 0 评论 -
【笔记】Mybatis高级查询(八)--枚举处理器的使用
在sys_role中有一个字段enabled,只有2个可选值,0-禁用,1-启用。在SysRole中使用了Integer enabled来定义,这种情况下必须手动校验enabled的值是否符合要求,在只有2个值的时候处理比较容易,但当值很多的时候,处理就比较麻烦。这时候就要使用Mybatis的枚举处理器。1. 使用Mybatis提供的枚举处理器Mybatis提供了2个枚举处理器:org....原创 2018-10-30 20:33:54 · 2577 阅读 · 0 评论 -
SSM项目CRUD实战(一)-环境搭建
环境信息eclipse: Neon.3 Release (4.6.3)java: JDK 8maven: 3.5.2spring-framework: 4.3.14.RELEASEmybatis: 3.4.6mysql:5.1.46tomcat:8.0.521. 搭建SSM项目工程第一步:创建maven工程选择“file”->“new”->“maven p.原创 2018-10-30 22:54:26 · 556 阅读 · 0 评论 -
SSM项目CRUD实战(二)-SSM框架整合及生成Mybatis代码
1. 在pom.xml中添加SSM框架相关的依赖,完整的pom.xml如下<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org原创 2018-11-01 23:35:17 · 10083 阅读 · 0 评论 -
【笔记】Mybatis高级查询(九)--Mybatis代码生成器的使用
MBG官方文档:http://www.mybatis.org/generator/Mybatis Generator,简称MBG,是Mybatis开发团队提供的一个很强大的代码生成器,可以生成数据库表对应的实体类、Mapper接口类、Mapper XML文件和Example对象等。这些代码文件几乎包含了全部的单表操作方法。使用MBG可以减少很多重复操作,提高开发效率。1、XML配置gen...原创 2018-11-04 16:15:17 · 3443 阅读 · 0 评论 -
【笔记】Mybatis高级查询(十)--Mybatis缓存使用
【笔记】Mybatis高级查询(准备)【笔记】Mybatis高级查询(一)–使用自动映射处理一对一关系【笔记】Mybatis高级查询(二)–使用resultMap配置一对一映射【笔记】Mybatis高级查询(三)–使用标签实现嵌套查询及延迟加载【笔记】Mybatis高级查询(四)–使用resultMap的标签实现一对多和多对多查询【笔记】Mybatis高级查询(五)–使用resultM...原创 2018-11-04 23:45:23 · 513 阅读 · 0 评论 -
SSM项目CRUD实战(三)-开发图书信息管理CRUD功能
1、开发数据层(DAO层)在BookInfoMapper.xml里面增加一个条件查询方法selectByCondition,如下 <!-- 条件查询(当条件为空时查询全部) --> <select id="selectByCondition" resul原创 2018-11-11 22:21:50 · 507 阅读 · 0 评论 -
SSM项目CRUD实战(四)-项目部署及打包发布
1、在eclipse中运行项目启动tomcat,在浏览器中输入http://localhost:8080/book/manager,将会出现主页,如下图所示1.1 验证添加功能点“添加”按钮,会跳转到“图书维护”页面,如下图什么都不输入时点“保存”按钮,会进行必输项等校验,该项目的校验方式有2种,第一种是js中对入参进行校验,另一种在后台使用springMV...原创 2018-11-11 23:56:09 · 5912 阅读 · 0 评论 -
【笔记】Mybatis高级查询(小结)--嵌套查询及延迟加载
<association>与<collection>标签一对一、一对多,多对多查询时用到的属性property:对应实体类中的属性名,必填项。javaType:属性对应的类型。resultMap:可以直接使用现有的resultMap,不需要再配置。columnPrefix:查询列的前缀,配置前缀后,在子标签配置&l原创 2018-10-23 22:28:48 · 961 阅读 · 1 评论 -
【笔记】Mybatis高级查询(四)--使用resultMap的<collection>标签实现一对多和多对多查询
&amp;amp;amp;lt;collection&amp;amp;amp;gt;集合的嵌套结果映射就是指通过一次SQL查询将所有的结果查询出来,然后映射到不同的对象中。在一对多的关系中,主表一条数据会对应关联表的多条数据。因此一般查询时会查询出多条结果,按照一对多的数据映射时,最终的结果数会小于等于查询的总记录数。在RBAC权限系统中一个用户拥有多个角色,一个角色又拥有多个权限。以下例子通过嵌套查询查出某个用户及用户角色。1. ...原创 2018-10-21 23:37:15 · 5736 阅读 · 0 评论 -
Mybatis多个接口参数的用法
背景:比如有一个接口方法selectByUserIdAndEnabled(Long userId, Integer enabled)。需要用userId和enabled去关联查用户权限信息。接口如下: /** * 通过用户ID和权限开关查询用户拥有的角色 * @param id * @return */ List&lt;SysRole&gt; selectByUserId...原创 2018-10-03 00:05:46 · 1446 阅读 · 0 评论 -
Mybatis常用的OGNL表达式
在Mybatis的动态SQL和${}形式的参数中都用到了OGNL表达式。Mybatis常用的OGNL表达式如下1、e1 or e2:或<if test="userEmail != null or userEmail == '1'"></if>2、e1 and e2:且<if test="userEmail != null and userEmail != ...原创 2018-10-17 22:54:09 · 2732 阅读 · 0 评论 -
Mybatis多数据库支持
Mybatis的<bind>标签并不能解决更换数据库带来的所有问题。需要通过<if>标签以及由Mybatis提供的databaseIdProvider数据库厂商标识配置。Mybatis可以根据不同的数据库执行不同的语句。都是基于databaseId这个属性实现的。Mybatis会同时加载不带databaseId属性和带有匹配当前数据库databaseId的所有语句...原创 2018-10-17 23:29:47 · 2828 阅读 · 3 评论 -
Mybatis <bind>标签用法
<bind>标签可以使用ONGL(Object-Graph Navigation Language, 对象图形化导航语言)表达式创建一个变量并将其绑定到上下文中。如以下代码:<if test="userName != null and userName != ''"> and user_name like concat('%', #{userName} ,'%') &...原创 2018-10-16 23:45:35 · 10660 阅读 · 3 评论 -
【笔记】Mybatis高级查询(五)--使用resultMap的<collection>进行嵌套查询及延迟加载
下面例子通过&amp;lt;collection&amp;gt;实现一个通过用户编号查询用户下面的角色及权限的需求,支持延迟加载。下面以自下而上的过程来实现这样的嵌套查询功能。并且这个自下而上的过程中每一个方法都是独立可用的方法。上层的结果都以下层方法为基础。所有对象都设置为延迟加载。在最底层权限表sys_privilege的映射文件SysPrivilegeMapper.xml中添加selectPriBy...原创 2018-10-22 22:49:04 · 2452 阅读 · 1 评论 -
【笔记】Mybatis高级查询(准备)
1. 在MYSQL中创建数据库表,如下:-- 创建用户表(sys_user)create table sys_user( id bigint not null auto_increment comment '用户编号', user_name varchar(60) comment '用户名', user_password varchar(60) comment '密码', user...原创 2018-10-21 16:58:00 · 655 阅读 · 0 评论 -
【笔记】Mybatis高级查询(一)--使用自动映射处理一对一关系
假设在RBAC权限系统中,一个用户只能有一个角色,那么就是一对一关系了。一对一映射因为不需要考虑是否存在重复数据,用起来简单,所以可以直接使用Mybatis的自动映射。以下例子为使用自动映射实现在查询用户信息的同时获取用户的角色信息。在SysUser类中增加SysRole的属性,代码如下:public class SysUser { // 其它原有属性 /**...原创 2018-10-21 18:01:58 · 1581 阅读 · 0 评论 -
【笔记】Mybatis高级查询(二)--使用resultMap配置一对一映射
1. 使用resultMap配置一对一映射除了使用Mybatis的自动映射处理一对一嵌套外,还可以在XML映射文件中配置结果映射。以下例子是用resultMap配置来处理上一节一对一映射的。在SysUserMapper.xml中增加以下resultMap&amp;amp;amp;lt;!-- 使用resultMap配置一对一映射(原始版) --&amp;amp;amp;gt;&amp;amp;amp;lt原创 2018-10-21 19:10:31 · 2422 阅读 · 1 评论 -
【笔记】Mybatis高级查询(三)--使用<association>标签实现嵌套查询及延迟加载
&amp;amp;lt;association&amp;amp;gt;标签实现嵌套查询,需要用到以下属性:select:另一个映射查询的ID,Mybatis会额外执行这个查询获取嵌套对象的结果。column:列名或别名,将主查询中列的结果作为嵌套查询的参数,配置方式如column={prop1=col1,prop2=col2},prop1和prop2作为嵌套查询的参数。fetchType:数据的加载方式,可选...原创 2018-10-21 22:44:13 · 2301 阅读 · 1 评论 -
Mybatis处理日期类型字段时抛出invalid comparison: java.util.Date and java.lang.String异常
现象: 实体定义了一个Date类型的字段,如下 /** * 生日 */ @DateTimeFormat(pattern="yyyy-MM-dd") private Date birthday;Mybatis的Mapper定义如下 <if test="birthday != null and birthday != ''"> birt...原创 2019-06-20 23:47:56 · 797 阅读 · 0 评论