文档章节

mybatis一些简单配置

y
 yan_liu
发布于 2017/09/07 16:52
字数 636
阅读 4
收藏 0

<?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- namespace 标识唯一的映射 -->
<!-- user为model.User的别名,其中别名的定义在sqlMapConfig中定义的,命名空间model.User不能用别名代替 -->
<mapper namespace="model.User">
    <!-- id:sql语句的唯一标识 parameterType:传入数据的参数类型 resultType:
    返回值得数据类型 #{id}:接收参数的语法,如果是一个参数,参数名任意 -->
    <resultMap type="model.User"  id="baseResultMap">
        <id column="user_id" property="userId" />
        <result column="user_name" property="userName" />
        <result column="birthday" property="birthday" />
        <result column="user_addr" property="userAddr" />
    </resultMap>
    <select id="selectUserById" parameterType="java.lang.Integer"
        resultType="model.User">
        select * from user t where t.user_id = #{id}
    </select>
    <select id="selectUserById1" parameterType="java.lang.Integer"
        resultMap="baseResultMap">
        select * from user t where t.user_id = #{id}
    </select>
    <select id="selectUserCount" parameterType="java.lang.Integer"
        resultType="java.lang.Integer">
        select count(*) from user
    </select>
    <!--resultType:返回系统定义的数据类型时使用 resultMap:返回自定义实体类型使用 -->
    <select id="selectUserByIdWithMap" parameterType="java.lang.Integer"
        resultType="java.util.Map">
        select * from user t where t.user_id = #{id}
    </select>
    <select id="selectUserAll" resultMap="baseResultMap">
        select * from user
    </select>
    <!-- 多个参数查询,使用map方式#{userName},userName为Map中的key,parameterType要设置成 java.util.Map -->
    <select id="selectUserById2" parameterType="java.util.Map"
        resultMap="baseResultMap">
        select * from user t where t.user_name=#{userName} and
        t.user_addr=#{userAddr}
    </select>
    <select id="selectUserById3" parameterType="model.Condition"
        resultMap="baseResultMap">
        select * from user t where t.user_name=#{userName} and
        t.user_addr=#{userAddr}
    </select>
    <select id="selectUserByLike" parameterType="java.util.Map"
        resultMap="baseResultMap">
        select *from user t where t.user_name like '%${userName}%'
    </select>
    
    <!-- 容易有输入输出问题 -->
    <select id="selectUserByIn" parameterType="java.util.Map" resultMap="baseResultMap">
        select *from user t where t.user_id in ${ids}
    </select>
    
    <!-- (1,2,3)
        collection:集合,用于接收map中的集合,ids必须是map中的key
        open:以某种字符开始
        close:以某种字符结束
        item:循环的每一项
        separator:用什么来分割
    -->
    <select id="selectUserByInWithForEach"  resultMap="baseResultMap">
            select *from user t where t.user_id in
            <foreach collection="ids" open="(" close=")" item="id" separator=",">
                #{id}
            </foreach>
    </select>
    
    <insert id="insert" parameterType="model.User" >
        <!-- keyProperty:实体类里的主键 order:是主键生成的顺序,在MySQL中是AFTER resultType:是主键在实体类中的类型
            生成主键的sql:在MySQL中select LAST_INSERT_ID() -->
        <selectKey keyProperty="userId" order="AFTER" resultType="int">
            select LAST_INSERT_ID()
        </selectKey>
        insert into user(user_id,user_name,birthday,user_addr)
        value (#{userId},#{userName},#{birthday},#{userAddr})
    </insert>

    <update id="update" parameterType="model.User">
        update user t set t.user_name=#{userName},
        t.birthday=#{birthday},
        t.user_addr=#{userAddr}
        where t.user_id=#{userId}
    </update>
    <!-- delete在MySQL中不支持别名 -->
    <delete id="deleteUserById" parameterType="java.lang.Integer">
        delete from user where user_id=#{userId}
    </delete>
    <!-- 注意,引用上面的baseResultMap 是resultMap类型而不是resultType类型 -->
    <select id="selectUserIdByCondition" parameterType="java.util.Map" resultMap="baseResultMap">
    select * from user t
    <where>
        <if test ="userName!=null">
            t.user_name like '%${userName}%'
        </if>
        <if test="birthday !=null">
            <![CDATA[
            and t.birthday<  #{birthday}
            ]]>
                
        </if>
        <if test="userAddr!=null">
            and t.user_addr like '%${userAddr}%'
        </if>
    </where>
    </select>
    <!-- 动态更新 <set>可以自动处理最后一个人逗号 -->
    <update id="dynamicUpdate" parameterType="user">
        update user t
        <set>
            <if test="userName!=null">
                t.user_name=#{userName},
            </if>
            <if test="userAddr!=null">
                t.user_addr=#{userAddr},
            </if>
            <if test="birthday!=null">
                t.birthday=#{birthday}
            </if>
            where t.user_id=#{userId}
        </set>
    </update>
    
    
</mapper>

© 著作权归作者所有

上一篇: spring。xml
y
粉丝 0
博文 52
码字总数 8413
作品 0
朝阳
程序员
私信 提问
Spring Boot [集成-MyBatis]

导读: 在上篇文章中我们介绍了spring-data-jpa的一些常用方法,在这篇文章中我们在介绍关于mybatis与Spring Boot 的集成,及一些常用方法 集成: 这里有两种方式,一种是常规的Spring 应用的...

yangrd
2018/08/27
0
0
MyBatis 源码分析系列文章导读

1.本文速览 本篇文章是我为接下来的 MyBatis 源码分析系列文章写的一个导读文章。本篇文章从 MyBatis 是什么(what),为什么要使用(why),以及如何使用(how)等三个角度进行了说明和演示...

coolblog.xyz
2018/07/17
0
0
Spring和MyBatis环境整合

Spring: Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。 两个重要模块:Spring 面向方面编程(AOP)和控制反转 (IOC) 容器。 控制反转模式(也称作依赖性介入)的基本概念...

肖歌
2016/03/21
74
0
Spring与Mybatis环境搭建

SSH框架的结合几乎家喻户晓,但是一般的中小项目,使用Spring和MyBatis就够了,而且MyBatis轻便好使,易上手,值得大家尝试一次。   开篇简介:   Spring: Spring是一个轻量级的控制反转...

boonya
2015/04/14
10.7K
2
Mybatis在接口上使用注解配置SQL语句以及接口与xml一起使用

在接口上使用注解配置SQL语句 MyBatis对于大部分的基于XML的映射器元素(包括)提供了对应的基于注解的配置项。然而在某些情况下,基于注解配置 还不能支持基于XML的一些元素。MyBatis提供了...

ZeroOne01
2018/04/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

计算机实现原理专题--二进制减法器(二)

在计算机实现原理专题--二进制减法器(一)中说明了基本原理,现准备说明如何来实现。 首先第一步255-b运算相当于对b进行按位取反,因此可将8个非门组成如下图的形式: 由于每次做减法时,我...

FAT_mt
昨天
6
0
好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
昨天
7
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
昨天
6
0
【技术分享】TestFlight测试的流程文档

上架基本需求资料 1、苹果开发者账号(如还没账号先申请-苹果开发者账号申请教程) 2、开发好的APP 通过本篇教程,可以学习到ios证书申请和打包ipa上传到appstoreconnect.apple.com进行TestF...

qtb999
昨天
10
0
再见 Spring Boot 1.X,Spring Boot 2.X 走向舞台中心

2019年8月6日,Spring 官方在其博客宣布,Spring Boot 1.x 停止维护,Spring Boot 1.x 生命周期正式结束。 其实早在2018年7月30号,Spring 官方就已经在博客进行过预告,Spring Boot 1.X 将维...

Java技术剑
昨天
18
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部