<?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"><mapper namespace="org.dao.UserMapper"><!-- user的resultMap,当数据库字段信息和对象的属性不一样时,需要通过resultMap来映射 --><!--association,property,对应的是实体类对象的名称;resultMap对应的是另一个表的映射  --><resultMap type="Users" id="userList"><result property="id" column="id"/><result property="userCode" column="userCode"/><result property="userName" column="userName"/><result property="userPassword" column="userPassword"/><result property="gender" column="gender"/><result property="birthday" column="birthday"/><result property="phone" column="phone"/><result property="address" column="address"/><result property="userrole" column="userrole"/><result property="createBy" column="createBy"/><result property="creationDate" column="creationDate"/><result property="modifyBy" column="modifyBy"/><result property="modifyDate" column="modifyDate"/><association property="role" resultMap="roleList"/></resultMap><!-- Role的resultMap --><resultMap type="Role" id="roleList"><result property="id" column="id"/><result property="roleCode" column="roleCode"/><result property="roleName" column="roleName"/><result property="createdBy" column="createdBy"/><result property="creationDate" column="creationDate"/><result property="modifyBy" column="modifyBy"/><result property="modifyDate" column="modifyDate"/></resultMap><!-- 查询用户表的记录数 --><select id="count" resultType="int">select count(*) from user</select><!-- 查询所有的用户信息 --><select id="getUserList" resultType="Users">select * from user</select><!-- 根据用户名进行模糊查询 --><select id="getUsersByName" resultMap="userList" parameterType="string">select * from user where userName like concat ('%',#{userName},'%')</select><!-- 查询用户列表 --><select id="getUserListByUser" resultMap="userList" parameterType="Users">select * from user where userName like concat('%',#{userName},'%') and userRole = #{userrole}</select><!-- 查询用户列表,参数是Map集合 --><select id="getUsersListByMap" resultMap="userList" parameterType="Map">select * from user where userName like concat ('%',#{userName},'%') and userRole = #{userrole}</select><!-- 查询用户列表,连接查询--><select id="getUserListAndRole" resultMap="userList" parameterType="Users">select * from user u join role r on u.userRole = r.id  where u.userName like concat ('%',#{userName},'%') and u.userrole = #{userrole}</select><!-- 增加用户,字段名必须都写上 --><insert id="saveUser" parameterType="Users">insert into user (userCode,userName,userPassword,gender,birthday,phone,address,userRole,createdBy,creationDate,modifyBy,modifyDate) values(#{userCode},#{userName},#{userPassword},#{gender},#{birthday},#{phone},#{address},#{userrole},#{createBy},#{creationDate},#{modifyBy},#{modifyDate})</insert><!-- 根据id修改信息 --><update id="updateUser" parameterType="Users">update user set userCode=#{userCode},userName=#{userName},userPassword=#{userPassword},gender=#{gender},birthday=#{birthday},phone=#{phone},address=#{address},userRole=#{userrole},createdBy=#{createBy},creationDate=#{creationDate},modifyBy=#{modifyBy},modifyDate=#{modifyDate}where id=#{id}</update><!-- 根据编号进行删除数据 --><delete id="delUser" parameterType="int">delete from user where id=#{id}</delete><!-- 根据id查询用户列表 --><select id="getUsersById" parameterType="int" resultMap="userList">select * from user where id = #{id}</select><!-- 根据角色id查询用户列表 --><select id="getUsersByRoleId" parameterType="int" resultMap="userList">select * from user u,role r where u.userrole = #{userrole} and r.id = u.userrole</select><!-- 根据用户名和角色编号查询用户信息 --><select id="getUsersListByUserNameAndRole_if" resultMap="userList">select * from user u, role r where u.userrole=r.id<if test="userrole!=null">and userrole = #{userrole}</if><if test="userName!=null">and userName like concat('%',#{userName},'%')</if></select><!-- 动态根据用户名和角色id查询用户列表,where and|or --><select id="getUsersListByUserNameAndRole_ifAndwhere" resultMap="userList">select * from user <where><if test="userrole!=null and userrole!=''">and userrole = #{userrole}</if><if test="userName!=null and userName!=''">and userName like concat('%',#{userName},'%')</if></where></select><!-- 动态修改用户信息表if+set --><update id="updateUser_ifAndSet" parameterType="Users">update user<set><if test="userCode!=null">userCode=#{userCode},</if><if test="userName!=null">userName=#{userName},</if><if test="userPassword!=null">userPassword=#{userPassword},</if><if test="gender!=null">gender=#{gender},</if><if test="birthday!=null">birthday=#{birthday},</if><if test="phone!=null">phone=#{phone},</if><if test="address!=null">address=#{address},</if><if test="userrole!=null">userrole=#{userrole},</if><if test="createBy!=null">createdBy=#{createBy},</if><if test="creationDate!=null">creationDate=#{creationDate},</if><if test="modifyBy!=null">modifyBy=#{modifyBy},</if><if test="modifyDate!=null">modifyDate=#{modifyDate},</if></set>where id=#{id}</update><!-- 动态根据用户名和角色id查询用户列表,使用trim进行查询用户信息,where and|or --><!-- prefix:前缀,通过自动识别是否有返回值,在trim包含的内容上加上前缀 --><!-- suffix:后缀,在trim包含的内容的上加上后缀 --><!-- prefixOverrides:对于trim包含的内容的首部进行指定内容 --><!-- suffixOverrides:地狱与trim包含的内容的首尾部进行指定内容的忽略 --><select id="getUsersListByUserNameAndRole_ifAndwhere_trim" resultMap="userList">select * from user <trim prefix="where" prefixOverrides="and | or"><if test="userrole!=null and userrole!=''">and userrole = #{userrole}</if><if test="userName!=null and userName!=''">and userName like concat('%',#{userName},'%')</if></trim></select><!-- 动态修改用户信息表if+trim --><update id="updateUser_ifAndTrim" parameterType="Users">update user<trim prefix="set" suffixOverrides="," suffix="where id=#{id}"><if test="userCode!=null">userCode=#{userCode},</if><if test="userName!=null">userName=#{userName},</if><if test="userPassword!=null">userPassword=#{userPassword},</if><if test="gender!=null">gender=#{gender},</if><if test="birthday!=null">birthday=#{birthday},</if><if test="phone!=null">phone=#{phone},</if><if test="address!=null">address=#{address},</if><if test="userrole!=null">userrole=#{userrole},</if><if test="createBy!=null">createdBy=#{createBy},</if><if test="creationDate!=null">creationDate=#{creationDate},</if><if test="modifyBy!=null">modifyBy=#{modifyBy},</if><if test="modifyDate!=null">modifyDate=#{modifyDate},</if></trim></update><!-- 根据用户角色列表,获取该角色刘表下用户列表信息foreach_array --><!-- item:循环体中的具体对象。支持属性的点路径访问,如item.age,item.info.details。 具体说明:在list和数组中是其中的对象,在map中是value。该参数为必选。 --><!-- collection:要做foreach的对象,作为入参时,List<?>对象默认用list代替作为键,数组对象有array代替作为键,Map对象没有默认的键。当然在作为入参时可以使用@Param("keyName")来设置键,设置keyName后,list,array将会失效。 除了入参这种情况外,还有一种作为参数对象的某个字段的时候。举个例子:如果User有属性List ids。入参是User对象,那么这个collection = "ids"如果User有属性Ids ids;其中Ids是个对象,Ids有个属性List id;入参是User对象,那么collection = "ids.id"上面只是举例,具体collection等于什么,就看你想对那个元素做循环。该参数为必选。 --><!-- separator:元素之间的分隔符,例如在in()的时候,separator=","会自动在元素中间用“,“隔开,避免手动输入逗号导致sql错误,如in(1,2,)这样。该参数可选。 --><!-- open:foreach代码的开始符号,一般是(和close=")"合用。常用在in(),values()时。该参数可选。 --><!-- close:foreach代码的关闭符号,一般是)和open="("合用。常用在in(),values()时。该参数可选。 --><!-- index:在list和数组中,index是元素的序号,在map中,index是元素的key,该参数可选。 --><select id="getUsersByRoleId_foreach_array" resultMap="userList">select * from user where userrole in <foreach collection="array" item="roleids" open="(" separator="," close=")">#{roleids}</foreach></select><!-- 根据用户角色列表,获取该角色刘表下用户列表信息foreach_list --><select id="getUsersByRoleId_foreach_list" resultMap="userList">select * from user where userrole in <foreach collection="list" item="roleids" open="(" separator="," close=")">#{roleids}</foreach></select><!-- 根据用户角色列表和性别(多参数),获取该角色刘表下用户列表信息foreach_map --><select id="getUsersByRoleId_foreach_many_map" resultMap="userList">select * from user where gender = #{gender} and  userrole in <foreach collection="roleids" item="roleMap" open="(" separator="," close=")">#{roleMap}</foreach></select><!-- 根据用户角色列表(单参数),获取该角色刘表下用户列表信息foreach_map --><select id="getUsersByRoleId_foreach_one_map" resultMap="userList">select * from user where   userrole in <foreach collection="rKey" item="roleMap" open="(" separator="," close=")">#{roleMap}</foreach></select><!-- 查询用户列表,使用choose --><select id="getUsersList_choose" resultMap="userList">select * from user where 1=1<choose><when test="userName!=null and userName!=''">and userName  like concat('%',#{userName},'%')</when><when test="userrole!=null">and userrole =#{userrole}</when><when test="userCode!=null and userCode!=''">and userCode =#{userCode}</when><otherwise>and YEAR(creationDate) = YEAR(#{creationDate})</otherwise></choose></select><!-- 分页显示用户信息 --><select id="getUserList_page" resultMap="userList">select * from user limit #{from},#{pageSize}</select>
</mapper>

mybatis简单案例源码详细【注释全面】——Dao层映射文件(UserMapper.xml)【重要】相关推荐

  1. mybatis简单案例源码详细【注释全面】——前期准备

    mybatis 是个什么东西,这里就不必说了,大家去网上搜搜看就行了,在这里我主要是分享一下最基本的增删改查案例以及配置信息,测试信息. 首先我们创建个数据库: /* SQLyog 企业版 - MyS ...

  2. mybatis简单案例源码详细【注释全面】——Utils层(MybatisUtils.java)

    /** * @Title: MybatisUtils.java * @Package org.util * @Description: TODO该方法的主要作用: * @author A18ccms ...

  3. mybatis简单案例源码详细【注释全面】——测试层(UserMapperTest.java)

    /** * @Title: UserMapperTest.java * @Package org.test * @Description: TODO该方法的主要作用: * @author A18ccm ...

  4. mybatis简单案例源码详细【注释全面】——Dao层接口(UserMapper.java)

    /** * @Title: IUserDao.java * @Package org.dao * @Description: TODO该方法的主要作用: * @author A18ccms A18cc ...

  5. mybatis简单案例源码详细【注释全面】——实体层(Role.java)

    package org.entity;import java.util.Date; /*** * * 项目名称:ssm_chop2 * 类名称:Role * 类描述: 角色表的实体类 * 创建人:Mu ...

  6. mybatis简单案例源码详细【注释全面】——实体层(User.java)

    /** * @Title: Users.java * @Package org.entity * @Description: TODO该方法的主要作用: * @author A18ccms A18cc ...

  7. ExcelToHtmlTable转换算法:将Excel转换成Html表格并展示(项目源码+详细注释+项目截图)...

    功能概述 Excel2HtmlTable的主要功能就是把Excel的内容以表格的方式,展现在页面中. Excel的多个Sheet对应页面的多个Tab选项卡. 转换算法的难点在于,如何处理行列合并,将E ...

  8. 汇编实验 用表格形式显示字符(附源码详细注释和相关注意的知识)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/qq_40774175/article/ ...

  9. 常用算法 之一 详解 MD5 实现(基于算法的官方原文档)及源码详细注释

    写在前面   在之前的工作中,用到了CRC16.MD5 和 SHA1 算法,主要用来校验下发的文件.网上关于这些算法的文章铺天盖地,以下内容仅仅是自己在学习时候的一个记录,一些套话来自于互联网.下面先 ...

最新文章

  1. UVa197 - Cube(TLE)
  2. 《货币是个什么东西》笔记
  3. oracle spfile和pfile文件
  4. Bitmovin视频开发者报告回顾
  5. python银行系统模拟演练_python多线程实现代码(模拟银行服务操作流程)
  6. JSON解析中获取不存在的key
  7. Spring Boot加入websocket后,单元测试报错(javax.websocket.server.ServerContainer not available)
  8. NetAug(网络增强)—Dropout的反面
  9. 不一样的三一重工:重在选择 —— 三一集团CIO潘睿刚专访系列之一
  10. Ubuntu下Chrome打不开解决办法
  11. Ubuntu 搭建简单的git server
  12. java水彩画效果滤镜,PS通过滤镜给照片制作水彩画效果
  13. 自用机器学习笔记(1):什么是概率以及似然
  14. linux命令行连接蓝牙音箱,有些Linux发行版用蓝牙连接天猫精灵和小爱音箱没声音...
  15. PostgreSQL DBA(63) - Extension(pg_stat_statements)
  16. 20万+网易音乐人图鉴: 95后超70%、女歌手突破5万
  17. 飞花摘叶还是重剑无锋
  18. 美国医生推荐感冒食疗方
  19. c语言编程求pai的近似值,c语言:求π的近似值
  20. k8s——flannel网络

热门文章

  1. 数位dp总结 之 从入门到模板(stO)
  2. java图形包_java流布局图形包
  3. H.266 参考软件VTM下载和安装
  4. 2019-03-10-算法-进化(只出现一次的数字)
  5. 【HAOI2018】染色【反向二项式反演】【NTT卷积】
  6. P1600 天天爱跑步
  7. B Convex Polygon
  8. P4015 运输问题
  9. [CF1368E] Ski Accidents(神仙结论构造)
  10. luogu P4240 毒瘤之神的考验(莫比乌斯反演+递推前缀和+数论分块)