关闭

Mybatis的基础

39人阅读 评论(0) 收藏 举报
分类:

Mybatis的动态SQL

Mybatis的动态SQL语法有如下几种:


在常用来判断是否为空时使用
增删改查
if:
  <if test="title != null">
    AND title like #{title}
  </if>
set常用来更新和删除
set:
    <set>
      <if test="username != null">username=#{username},</if>
      <if test="password != null">password=#{password},</if>
      <if test="email != null">email=#{email},</if>
      <if test="bio != null">bio=#{bio}</if>
    </set>
类似arraylist取 并且有index 常用来插入操作
foreach:

  <foreach item="item" index="index" collection="list"
      open="(" separator="," close=")">
        #{item}
  </foreach>
在模糊查询中使用:
bind:

<bind name="pattern" value="'%' + _parameter.getTitle() + '%'" />
  SELECT * FROM BLOG
  WHERE title LIKE #{pattern}
如果where后有一个静态条件
choose:
  <choose>
    <when test="title != null">
      AND title like #{title}
    </when>
    <when test="author != null and author.name != null">
      AND author_name like #{author.name}
    </when>
    <otherwise>
      AND featured = 1
    </otherwise>
  </choose>
如果where后全是动态条件
trim:

select * from user 

  <trim prefix="WHERE" prefixoverride="AND |OR">

    <if test="name != null and name.length()>0"> AND name=#{name}</if>

    <if test="gender != null and gender.length()>0"> AND gender=#{gender}</if>

  </trim>

prefix:前缀      
prefixoverride:去掉第一个
suffixoverride:去掉最后一个
suffix:后缀
结果:select * from user where    name = 'xx' and gender = 'xx'

Mybatis增删改查的使用

增删改查分别是:

/**
insert
delete
update
selset
*/


//需要注意的是resultType="" resultMap=""

//resultMap 用来返回pojo对象需要用<resultMap type="" id =""></resultMap>定义 我们在使用generator生成时会生成BaseResultMap

还会有到 Base_Column_List 可重用的sql 常用来代替*

Mybatis结果集的映射问题,类型配置别名

类型配置别名方式:

类型别名是为 Java 类型设置一个短的名字。它只和 XML 配置有关,存在的意义仅在于用来减少类完全限定名的冗余

简单的来说就是每次写完全限定名很麻烦

在mybatis中有很多已经写好的别名 基础数据类型加_ 引用类型用小写

结果集映射在很多情况下都用到了别名

结果几种返回时单体的pojo用 resulttype,返回的是list用resultmap

为什么返回名称用map是因为在mybatis中字段使用map<>保存的 一行数据就是一个map map<”字段名”,”字段值”>

Mybatis中#{}和${}的使用和注意事项

#{}用的是最多的并且最好不要用${}是因为#{}用来替代?防止sql注入

在传递pojo时不用加注解@Param 直接用属性名称即可,但是一定要写对,我就写错过!-!

Mybatis和Maven项目中.xml文件是否在target中生成问题

在maven中配置: 这个不是java的问题是maven在编译时会过滤非.java文件,不在classes中生成

     <build>
       <resources>
            <!-- 编译之后包含xml   -->
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
                <filtering>true</filtering>
            </resource>
        </resources>
    </build>

Mybatis获取主键

原来写过博客 mysql插入与主键相同值的另一个字段

那么在mybatis中如何获取使用呢?

在insert中加上 useGeneratedKeys=”true” keyProperty=”..” keyProperty为你要自增的字段,在插入后会返回到原实体中

对于不支持主键的数据库可以使用selectKey来生成id减少代码中的复杂

获取数据库的主键自增SELECT LAST_INSERT_ID();

Mybatis中批量语句问题和

如果使用insert 中写入了多条语句用;分割开,还需要在url中配置 &allowMultiQueries=true

1.foreach进行sql动态处理

Mybatis分页

分页还是查询的一种,效率高的分页查询就是每次将上次查询的id或者可以截取的部分取出来用> <取出 这时是二分查找效率高 ~-~

Mybatis中like查询 使用bind

0
0
查看评论

MyBatis基础知识

dao:RoleMapper.java package cn.bdqn.dao; import java.util.List; import cn.bdqn.pojo.Role; public interface RoleMapper { public void add(Role rol...
  • yang_ai
  • yang_ai
  • 2016-07-29 16:57
  • 637

MyBatis基础

01——MyBatis入门 1.Mybatis快速入门 (1)MyBatis介绍 MyBatis本是apache的一个开源项目,原来称为IBatis 2010年这个项目由Apache software foundation 迁移到 google...
  • singit
  • singit
  • 2015-08-15 21:24
  • 1248

Mybatis最入门---HelloWorld

[一步是咫尺,一步即天涯] 上文中,我们已经演示了MySQL的安装配置,以及图形化管理工具的安装配置。本文,我们正式开始介绍当下流行Mybatis的使用方法,关于Mybatis的介绍,请进入传送门:Mybatis百度百科。下面开始我们的干货部分吧! 惯例,先来看看我们的准备工作有: a.操作系统...
  • ABCD898989
  • ABCD898989
  • 2016-04-17 18:55
  • 3862

mybatis 学习文档

mybatis 第一天 mybatis的基础知识   课程安排: mybatis和springmvc通过订单商品 案例驱动   第一天:基础知识(重点,内容量多)         ...
  • a2274335673
  • a2274335673
  • 2016-08-24 15:26
  • 732

三大框架 SSM 之 Mybatis基础练习

上课学习写的小例子,帮助回忆
  • qq_38333771
  • qq_38333771
  • 2017-09-05 21:42
  • 181

老司机学习MyBatis教程之MyBatis基础篇简单入门HelloWorld

一、准备 Eclipse:Luna Service Release 1 (4.4.1) MyBatis:org.mybatis.mybatis-3.2.8 JDK:1.7.0_79 二、步骤 ♦搭建一个Maven工程MyBatisDemo ♦POM文件导入相关依赖 <project xm...
  • Gaomb_1990
  • Gaomb_1990
  • 2017-10-20 21:41
  • 447

MyBatis面试题

Mybatis比IBatis比较大的几个改进是什么 a.有接口绑定,包括注解绑定sql和xml绑定Sql ,b.动态sql由原来的节点配置变成OGNL表达式,c. 在一对一,一对多的时候引进了association,在一对多的时候引入了collection节点,不过都是在resultMap里面配置...
  • t0404
  • t0404
  • 2016-07-18 22:39
  • 2297

MyBatis工具:基础CRUD封装

Mybatis基础 CRUD 封装将基础的 增、删、改、查进行了封装。省掉大部分简单Mapper的编写,节省开发时间。采用标准JPA规范,在此处配置好的POJO,放到其他任何实现了JPA的框架(如:Hibernate)都能使用。当然目前只使用到了JPA的一小部分注解,可以把这些封装看作一个超超超低配...
  • u010528826
  • u010528826
  • 2017-08-13 16:35
  • 414

mybatis泛型DAO接口的设计

http://blog.csdn.net/dreajay/article/details/8689590 import java.io.Serializable;   import java.util.List;    ...
  • legend_x
  • legend_x
  • 2013-09-21 23:26
  • 2263

【初学Mybatis】No.2 Mybatis的下载和搭建核心架构(Maven搭建)

使用Maven项目结构搭建Mybatis的核心架构
  • baofeidyz
  • baofeidyz
  • 2017-02-07 19:44
  • 830