mabatis入门知识
咸鱼最牛逼
这个作者很懒,什么都没留下…
展开
-
三、Mybatis的OGNL表达式
功能:OGNL表达式主要用于参数值的传递,以及“”、“”等标签的使用注意:OGNL直接支持java中的方法(只支持JDK中的方法,不支持其他JAR包中的方法)。例: <if test="Command != null and !"".equals(Command.原创 2018-05-09 10:00:01 · 8477 阅读 · 0 评论 -
十三、Mybatis之“多对一”和“一对一”
(一)类文件1.多方public class Business extends BaseBean { private String title; private String subtitle; private String imgFileName; private Integer price; private Integer distance;...原创 2018-06-03 19:46:01 · 305 阅读 · 0 评论 -
十四、Mybatis之Sql配置文件之引用类中的常量及方法
(一)Mybatis之Sql配置文件之引用类中的常量://书写方式是:'${@类全限定名@常量}'dic_city.type='${@com.imooc.constant.DictionaryConstant@TYPE_DICTIONARY_CITY}'(二)Mybatis之Sql配置文件之引用类中的方法: 同上!...原创 2018-06-03 19:50:42 · 1844 阅读 · 0 评论 -
十五、Mybatis之“一对一对一”
(一)案例背景 有4张表:用户表(user),商户表(business),订单表(orders),评论表(comment),这四张表的关系如下图所示: 关于上表,需要特别说明的是,因为“订单表(orders)”已经建立了与用户和商户的关系,而我们的“评论表(comment)”又与“订单表(orders)”建立了关系,所以我们的“评论表(comment)”无需再与用户、商户建立关系。...原创 2018-06-13 11:00:20 · 254 阅读 · 1 评论 -
十七、Mybatis之批量插入
1.Dao类中批量插入方法定义 /** * 批量插入group与menu的映射关系 * @param groupId 用户组id * @param menuIds menu的id数组 * @return 受影响的行数 */ int insertGroupMenuBath(@Param("groupId") Integer grou...原创 2018-06-21 17:10:12 · 214 阅读 · 0 评论 -
十八、Mybatis中的sql语句中的“小于号”和“大于号”要用转义字符“<”和">"
Mybatis中的sql语句中的“<”浩和“>”号要用转义字符“&lt;”和”&gt;“,否则会报错!原创 2018-06-26 07:51:21 · 60620 阅读 · 2 评论 -
十六、Mybatis之“多对多”
(一)案例介绍 我在开发一个权限管理系统,里面涉及到为“用户组”分配可操作“菜单项”,这里面的两个实体“用户组”和“菜单项”就是多对多的关系:一个用户组可以分配多个菜单项,一个菜单项可以分配给多个用户组。 (二)表设计 1.用户组CREATE TABLE `sys_group` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT ...原创 2018-06-20 09:32:53 · 504 阅读 · 0 评论 -
十九、Mybatis之配置文件之map
/** * 批量插入 * @param fieldMap <chapterUrl, chapterName>组成的Map * @param bookId {@link Book} */ void insertBatch(@Param("fieldMap") Map<String, String> fieldMap, @Para...原创 2019-02-19 19:20:55 · 333 阅读 · 0 评论 -
二十、Mybatis之调用存储过程
1.存储过程:DELIMITER ;;CREATE DEFINER=`root`@`localhost` PROCEDURE `addDep`(in depName varchar(32),in parentId int,in enabled boolean,out result int,out result2 int)begin declare did int; declare p...原创 2019-05-28 09:48:53 · 438 阅读 · 0 评论 -
二十一、Mybatis之一对多时,PageHelp分页失败的解决办法: Mybatis之懒加载
当Mybatis中涉及到1对多查询时,PageHelp分页会失败,具体说明参见:本文章说明参见 mybatis 使用 PageHelper 实现一对多正确分页本文只贴示例代码:<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...原创 2019-06-12 21:45:01 · 1020 阅读 · 0 评论 -
十二、Mybatis配置文件注意事项
特别注意: 在配置“<resultMap>”时,一定要把所有的属性都配上,否则尽管使用“select * from ..”,没有配置的属性查询出来的结果也是null(被坑了好几次了!)...原创 2018-06-03 17:00:53 · 225 阅读 · 0 评论 -
二、当Mybatis数据连接信息异常时,怎样在debug模式下找到数据库连接信息?
问题:有时候本地数据库明明数据库里面有表有数据,但却查询不到?原因: 可能数据库连接信息被配制成了其他地址有问题。比如:我参与的一个项目,数据库配置信息连接的是测试服务器的数据库(139.*.*.*),而本地数据库时(127.0.0.1),这样我就无法利用本地的数据库测试。解决办法: 1、首先在debug模式下,断点进入与数据库交互的接口:signInMapper.getSignInR...原创 2018-05-07 10:53:01 · 2496 阅读 · 0 评论 -
四、Mybatis之 应用 log4j 调试动态 SQL
Mybatis之 应用 log4j 调试动态 SQL: log4j.rootLogger=DEBUG,Console log4j.appender.Console=org.apache.log4j.ConsoleAppender log4j.appender.Console.layout=org.apache.log4j.PatternLayout log4j.appender.Console...原创 2018-05-09 10:11:44 · 182 阅读 · 0 评论 -
五、Mybatis一对多关系的配置要点
1.<*select>标签中查询出来的类名要和<resultMap>中的column属性值一致。但规定<resultMap>*的column属性值不能写成“表名.列名”,而是直接写数据库中的列名或别名。 2.如果两个表中都有ID属性,但因为规定<*resultMap>*的column属性值不能写成“表名.列名”,这时候要怎么办呢?可以用别名来代替...原创 2018-05-09 17:02:28 · 235 阅读 · 0 评论 -
七、Mybatis之容易混淆的概念和常见问题解析
(一)Mybatis之容易混淆的概念1、resultMap和resultType:当配置resultType时,就不需要配置resultMap,看似resultType方便,但是会被受限制,没有resultMap开放多。 相同点:都是表示查询结果集的类型。 不同点: resultMap需要手动配置映射关系,而resultType是直接指定java类型或者自定义的实体类型,查询结果集的列名...原创 2018-05-10 14:52:06 · 350 阅读 · 0 评论 -
八、Mybatis之接口式编程
(一)接口式编程与非接口式编程的区别1.namespace的命名方式: (1)非接口式编程:命名比较随意 <mapper namespace="Command">(2)接口式编程:必须是Mapper文件对应接口的全限定名,比如: <mapper namespace="com.imooc.dao.ICommand">2.调用sql语句的方式 (1)...原创 2018-05-10 15:55:44 · 294 阅读 · 0 评论 -
六、Mybatis之常用标签
(一)&amp;amp;lt;where&amp;amp;gt;标签 &amp;amp;lt;where&amp;amp;gt;标签一般与&amp;amp;lt;if&amp;amp;gt;标签一起使用。用了where关键字就不用再Sql语句后面加where 1=1来拼接,&amp;amp;lt;where&amp;amp;gt;标签会帮我们补上where关键字,假如&a原创 2018-05-10 11:08:41 · 503 阅读 · 0 评论 -
九、Mybatis之接口式编程的原理(大致流程介绍)
(一)Mybatis之接口式编程的原理(大致流程介绍)1、加载配置信息…… 2、通过加载配置信息加载一个代理工厂Map(PS:这个Map存放的是接口Class与对应的代理工厂的映射) 3、通过接口的Class从代理工厂Map取出对应的代理工厂 4、通过代理工厂实例化一个代理类 5、用这个代理类生成一个代理实例返回出去”return (T) Proxy.newProxyInsta...原创 2018-05-10 17:02:53 · 466 阅读 · 0 评论 -
十、Mybatis之分页查询
(一)功能 能够实现不加“limit *,*”也能实现分页查询。(二)具体实现 1.建立一个分页对象package com.imooc.entity;/** * @author 潘畅 * @date 2018/5/10 20:12 */public class Page { /** * 总条数(传过来的,数据库查询) */ private...原创 2018-05-12 09:46:27 · 242 阅读 · 0 评论 -
十一、Mybatis之批量新增
背景介绍: 一般在进行批量新增时,先遍历所有的要插入的数据,然后一条一条的插入。这样性能很低效,所以引出了批量新增的概念。(一)JDBC批量新增 在“PreparedStatement”对象对参数赋值之后,先不要调用“PreparedStatement.excuteQuery()”,而是先调用“PreparedStatement.addBatch()”,等遍历完成后,最后调用“Prep...原创 2018-05-12 10:58:40 · 419 阅读 · 0 评论 -
一、Mybtis的核心对象SqlSession解析
(一)Mybatis的核心对象SqlSession解析(这里是直接使用Mybatis,与Spring结合的Mybatis使用上略有不同) SqlSession的作用: 1、向 SQL 语句传入参数 2、执行SQL语句 3、获取执行SQL语句的结果 4、事务的控制 如何得到SqlSession: 1、通过配置文件获取数据库连接相关信息 2、通过配置信息...原创 2018-05-06 19:24:22 · 461 阅读 · 0 评论 -
二十二、Mybatis批量插入返回插入成功后的主键id
升级Mybatis版本到3.3.1。官方在这个版本中加入了批量新增返回主键id的功能<insert>标签中添加 useGeneratedKeys="true" keyProperty="id"在Dao中不能使用@param注解Mapper.xml中使用list变量(parameterType=“java.util.List”)接受Dao中的参数集合具体代码参见 /*...原创 2019-08-14 22:57:55 · 1029 阅读 · 0 评论