映射器是mybatis的基础和核心,下面学习下映射器的使用

映射器的主要元素

  • select  查询语句,可以自定义参数和返回结果集
  • insert  插入语句,返回一个整数,代表插入的条数
  • update  更新语句,返回一个整数,代表更新的条数
  • delete  删除语句,返回一个整数,代表删除的条数
  • parameterMap   定义参数映射关系
  • sql   定义一部分sql,然后在其他地方引用
  • resultMap  从数据库结果集中来加载对象

select元素

简单例子

<!-- java接口  public int getCount(String name); -->
<select id="getCount" resultType="int" parameterType="String" >
select count(*) c from t_user where name like concat ('%',#{name},'%')
</select>

查询结果返回resultMap,传递多个参数

<!-- java接口 public List<UserPO> getUserByName(Map<String, String> param); -->
<select id="getUserByName" parameterType="java.util.Map" resultMap="userMap">
select * from t_user where username like concat ('%',#{name},'%')
</select>

使用JavaBean传参

<!-- java接口 public List<UserPO> getUser(UserPO po); -->
<select id="getUser" parameterType="com.zyx.demo.test.po.UserPO" resultMap="userMap">
select * from t_user where username like concat ('%',#{username},'%')
</select>

insert元素

简单例子,主键回填

<!-- public int insertUser(UserPO user) -->
<insert id="insertUser" useGeneratedKeys="true" keyProperty="id">
insert into t_user (username,password,account) values (#{username},#{password},#{account})
</insert>

update和delete

简单例子

<!-- public int updateUser (UserPO user,int id) -->
<update id="updateUser" >
update t_user set username=#{username},password=#{password},account=#{account} where id=#{id}
</update>
<!-- public int deleteUser(int id) -->
<delete id="deleteUser" parameterType="int">
delete from t_user where id=#{id}
</delete>

resultMap结果映射集

   <!-- 自定义返回结果集 -->
<resultMap id="userMap" type="com.zyx.demo.test.po.UserPO">
<id property="id" column="id" javaType="java.lang.Integer"></id>
<result property="username" column="username" javaType="java.lang.String"></result>
<result property="password" column="password" javaType="java.lang.String"></result>
<result property="account" column="account" javaType="java.lang.Double"></result>
</resultMap>

动态SQL

if元素

    <select id="getUserByName" parameterType="java.util.Map" resultMap="userMap">
select * from t_user where true
<if test="name != null and name!=''" >
AND username like concat ('%',#{name},'%')
</if>
</select>

choose when otherwise 类似于swich case default

    <select id="getUserByName" parameterType="java.util.Map" resultMap="userMap">
select * from t_user where true
<choose>
<when test="name != null and name!=''">AND username like concat ('%',#{name},'%')</when>
<otherwise>and true</otherwise>
</choose>
</select>

where(sql中不用添加where true)

    <select id="getUserByName" parameterType="java.util.Map" resultMap="userMap">
select * from t_user
<where>
<if test="name != null and name!=''" >
AND username like concat ('%',#{name},'%')
</if>
</where>
</select>

set(帮助我们去掉错误数据)

    <update id="updateUser" >
update t_user
<set>
<if test="username != null and username!=''">username=#{username}</if>
<if test="password != null and password!=''">password=#{password}</if>
<if test="account != null and account!=''">account=#{account}</if>
</set>
where id=#{id}
</update>

foreach元素是循环语句,作用是遍历集合

test元素用于条件判断的语句中

bind元素的作用是通过OGNL表达式去自定义一个上下文变量

自动生成mapper

下载jar

        <!-- 数据库驱动包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
<!-- mybatis-generator-core核心jar包,代码生成 -->
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.2</version>
</dependency>

准备generator.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<!-- 数据库驱动包位置 -->
<classPathEntry location="D:\generator\mysql-connector-java-5.1.6.jar" />
<context id="caigouTables" targetRuntime="MyBatis3">
<commentGenerator>
<!-- 是否去除自动生成的注释 true:是 : false:否 -->
<property name="suppressAllComments" value="true" />
</commentGenerator> <jdbcConnection
driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://10.144.55.11:3306/test"
userId="root"
password="gome">
</jdbcConnection> <!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer true,把JDBC DECIMAL 和
NUMERIC 类型解析为java.math.BigDecimal -->
<javaTypeResolver>
<property name="forceBigDecimals" value="false" />
</javaTypeResolver> <!-- targetProject:生成PO类的位置 -->
<javaModelGenerator targetPackage="com.pojo" targetProject="D:\generator\src">
<!-- enableSubPackages:是否让schema作为包的后缀 -->
<property name="enableSubPackages" value="false" />
<!-- 从数据库返回的值被清理前后的空格 -->
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!-- targetPackage:mapper映射文件生成的位置 -->
<sqlMapGenerator targetPackage="com.mapper" targetProject="D:\generator\src">
<property name="enableSubPackages" value="false" />
</sqlMapGenerator>
<!-- targetPackage:mapper接口的生成位置 -->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.mapper" targetProject="D:\generator\src">
<property name="enableSubPackages" value="false" />
</javaClientGenerator> <!-- 指定表 t_user这里不指定schema,逆向工程会查询sysuser都有哪些schema,对每个schema生成对象-->
<table tableName="t_user" domainObjectName="User"></table> </context>
</generatorConfiguration>

执行命令,生成代码

java -jar mybatis-generator-core-1.3..jar -configfile mybatis-generator.xml

mybatis学习总结(三)——增删查改的更多相关文章

  1. Mybatis基础配置及增删查改操作

    一.简介 平时我们都用JDBC访问数据库,除了需要自己写SQL之外,还必须操作Connection, Statement, ResultSet 这些其实只是手段的辅助类. 不仅如此,访问不同的表,还会 ...

  2. mybatis实现简单的增删查改

    接触一个新技术,首先去了解它的一些基本概念,这项技术用在什么方面的.这样学习起来,方向性也会更强一些.我对于mybatis的理解是,它是一个封装了JDBC的java框架.所能实现的功能是对数据库进行增 ...

  3. myBatis 实现用户表增删查改操作<方法1 没有使用接口的>(最终版)

    在UserMapper.xml中添加增删改查 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYP ...

  4. myBatis 实现用户表增删查改操作<方法2 加入接口>(最终版)

    这2种方法的区别:1.添加接口 2.运用接口来实现 其他的都一样 添加接口 //接口的名字和xml的名字一样,这样xml中的namespace就不用改 public interface UserMap ...

  5. SSM框架-MyBatis框架数据库的增删查改操作

    话不多说,在User.xml文件中主要写一下操作数据库的sql语句,增,删,查,改是最常见的数据库操作 User.xml文件下:

  6. MongoDB入门学习(三):MongoDB的增删查改

            对于我们这样的菜鸟来说,最重要的不是数据库的管理,也不是数据库的性能,更不是数据库的扩展,而是怎么用好这款数据库,也就是一个数据库提供的最核心的功能,增删查改.         由于M ...

  7. 基于.net的分布式系统限流组件 C# DataGridView绑定List对象时,利用BindingList来实现增删查改 .net中ThreadPool与Task的认识总结 C# 排序技术研究与对比 基于.net的通用内存缓存模型组件 Scala学习笔记:重要语法特性

    基于.net的分布式系统限流组件   在互联网应用中,流量洪峰是常有的事情.在应对流量洪峰时,通用的处理模式一般有排队.限流,这样可以非常直接有效的保护系统,防止系统被打爆.另外,通过限流技术手段,可 ...

  8. mybatis、spring、mysql、maven实现简单增删查改

    之前写过的mybatis博客作为学习mybatis.spring还是不太合适. 现在找到一个不错的例子,首先将这个完整的mybatis增删查改例子在本地上实现出来,然后再进行学习. 项目结构与运行结果 ...

  9. Entity Framework(三)---FluentAPI和增删查改

    一.FluentAPI: 1.基本配置: namespace ConsoleApp14.ModelConfig { public class PersonConfig: EntityTypeConfi ...

  10. java:Hibernate框架1(环境搭建,Hibernate.cfg.xml中属性含义,Hibernate常用API对象,HibernteUitl,对象生命周期图,数据对象的三种状态,增删查改)

    1.环境搭建: 三个准备+7个步骤 准备1:新建项目并添加hibernate依赖的jar文件  准备2:在classpath下(src目录下)新建hibernate的配置文件:hibernate.cf ...

随机推荐

  1. dedecms--数据库

    最近在用dedecms做项目,dedecms里面有数据库操作类,其实这个在实际项目中用起来还是很方便的. 1:引入common.inc.php文件 require_once (dirname(__FI ...

  2. 如何解决div里面img图片下方有空白的问题?

    空白产生原因: 图片默认的vertical-align是baseline,(元素放置在父元素的基线上,也就是xx下边距) 一个inline-block元素,如果里面没有inline元素,或者overf ...

  3. es6 String.raw()

    模板字符串可以是原始的: ES6还为原生的String对象,提供了一个raw方法. 若使用String.raw 作为模板字符串的前缀,则模板字符串可以是原始(raw)的.反斜线也不再是特殊字符,\n  ...

  4. jenkins+gitlab发布maven项目

    1.简介:什么是Maven Maven是一个项目管理和综合工具.Maven提供给开发人员构建一个完整的生命周期框架; 开发团队可以自动完成该项目的基础设施建设,Maven使用标准的目录结构和默认构建生 ...

  5. Codeforces Gym 100650C The Game of Efil 模拟+阅读题

    原题链接:http://codeforces.com/gym/100650/attachments/download/3269/20052006-acmicpc-east-central-north- ...

  6. Feign详细使用-Spring Cloud学习第四天(非原创)

    文章大纲 一.Feign是什么二.Feign的基本实现三.Feign的继承特性四.Feign配置详解五.项目源码与参考资料下载六.参考文章   一.Feign是什么 前面几篇文章我们详细的介绍了Rib ...

  7. error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools":解决方案

    我是在安装scrapy时遇到这个问题的,安装其他组件也可能会遇到.但问题解决办法都是大致相同的. 以安装scrapy为例: 在pycharm中安装twisted时出现: error: Microsof ...

  8. 左偏树 / 非旋转treap学习笔记

    背景 非旋转treap真的好久没有用过了... 左偏树由于之前学的时候没有写学习笔记, 学得也并不牢固. 所以打算写这么一篇学习笔记, 讲讲左偏树和非旋转treap. 左偏树 定义 左偏树(Lefti ...

  9. Go语言:变参函数

    变参函数: 函数中形式参数的数目通常是确定的,在调用的时候要依次传入与形式参数对应的所有实际参数,但是在某些函数的参数个数可以根据实际需要来确定,这就是变参函数. Go语言支持不定长变参,但是要注意不 ...

  10. dtrace 网站

    Oracle SQL Tuning and CBO Internals: Based Optimizer with CBO Internals and SQL Tuning Optimization ...