mybatis里的mapper,@Mapper参数,Mapper.xml文件 sql语句Select+where语句
提示:有不清楚的可以试着看一下我最后的连接,是跟这些内容相关的
Mapper文件,特殊符号:
| 转义符号 | 原符号 | 中文意思 |
|---|---|---|
| &It; | < | 小于号 |
| > | > | 大于号 |
| & | & | 和 |
| ' | ' | 单引号 |
| " | " | 双引号 |
在Mapper xml文件写一些符号,有时候识别不了,就会出错,就需要用到上面的转义字符了。
或者为了方便用<![CDATA[]]>也是可以的,在下面的例子代码也有用到。
例如:
1 col_name <![CDATA[ >= ]]> #{colVal} 【例1】
2
3 <![CDATA[ and w.WORK_DAY <= #{workdayEnd} ]]> 【例2】
Mapperxml文件的参数说明:
resultMap:resultMap是Mybatis最强大的元素,它可以将查询到的复杂数据(比如好几个表结合起来的数据)映射到【某个类型】的集当中。
例如:我已经写好了需要的pojo类【workRecordBo】,里面有我需要用的字段。
写类字段需要注意:
mybatis默认是属性名和数据库字段名一一对应的,即
数据库表列:user_name
实体类属性:user_name
但是java中一般使用驼峰命名
数据库表列:user_name
实体类属性:userName
我在xml中需要这样写:property="类里面的字段名" ,column="数据库里面对应的字段"
1 <resultMap id="workRecordBo" type="com.ribao.entity.bo.WorkRecordBo" >
2 <result property="workDay" column="WORK_DAY"/>
3 </resultMap>
id:与继承BaseMapper的接口中的方法名一样
例如:我的接口是这样的 public interface WorkRecordMapper extends BaseMapper<WorkRecord>{}
我的方法名: public void getWorkRecord(@Param("workdayStart")String workdayStart,@Param("workdayEnd")String workdayEnd,@Param("teamid")String teamid);
@Param()是与xml文件中的#{}绑定在一起的,名字一定要相同,数据类型也要相同。
例如:@Param("workdayStart")对应xml文件的 #{workdayStart}
resultType:resultType是sql映射文件中定义返回值类型,返回值有基本类型,对象类型,List类型,Map类型等,这里目前只说【对象类型】。
对象类型:写全类名
例如:package com.ribao.entity.bo;
public class WorkRecordBo {......}
我的类名就是:resultType="com.ribao.entity.bo.WorkRecordBo"
Mapper的xml文件写select语句+where条件筛选:
1 <select id="selectWorkRecord" resultType="com.ribao.entity.bo.WorkRecordBo" resultMap="workRecordBo">
2 SELECT e.EMPLOYEE_ID,t.TEAM_NAME,p.PROJECT_NAME,b.BIG_NAME,s.SMALL_NAME,l.LAN_NAME,WORK_DA,w.REMARK
3 from WORKRECORD w
4 join PROJECT p on p.PROJECT_ID=w.PROJECT_ID
5 join BIGCATEGORY b on b.BIG_ID=w.BIG_ID
6 join SMALLCATEGORY s on s.SMALL_ID=w.SMALL_ID
7 join EMPLOYEE e on e.EMPLOYEE_ID=w.EMPLOYEE_ID
8 join TEAM t on t.TEAM_ID=w.TEAM_ID
9 join LANGUAGE l on l.LAN_NO=w.LAN_NO
10
11 <where>
12 <if test="workdayStart != null and workdayStart !='' " >//workdayStart为非空的时候执行
13 w.WORK_DAY >= #{workdayStart}
14 </if>
15
16 <if test="workdayEnd != null and workdayEnd !='' " >
17 <![CDATA[ and w.WORK_DAY <= #{workdayEnd} ]]>
18 </if>
19
20 <if test="teamidList != null and teamidList !='' " >
21 and w.TEAM_ID in
22 <foreach collection="teamidList" index="index" item="teamid" open="(" separator="," close=")">
23 #{teamid}
24 </foreach>
25 </if>
26
27 </where>
可参考的博客:
【Java】数据库mapper与实体字段对应,SpringBoot开启驼峰映射 网址:https://blog.csdn.net/hr952909686/article/details/91344655
Mybatis:resultMap的使用总结网址:https://www.cnblogs.com/kenhome/p/7764398.html
学习 mybatis的官方网址:https://mybatis.org/mybatis-3/zh/sqlmap-xml.html
mybatis里的mapper,@Mapper参数,Mapper.xml文件 sql语句Select+where语句的更多相关文章
- Java Persistence with MyBatis 3(中文版) 第三章 使用XML配置SQL映射器
关系型数据库和SQL是经受时间考验和验证的数据存储机制.和其他的ORM 框架如Hibernate不同,MyBatis鼓励开发者可以直接使用数据库,而不是将其对开发者隐藏,因为这样可以充分发挥数据库服务 ...
- 做参数可以读取参数 保存参数 用xml文件的方式
做参数可以读取参数 保存参数 用xml文件的方式 好处:供不同用户保存适合自己使用的参数
- Hibernate中:不看数据库,不看XML文件,不看查询语句,怎么样能知道表结构?
Hibernate中:不看数据库,不看XML文件,不看查询语句,怎么样能知道表结构? 解答:可以看与XML文件对应的域模型.
- 搜索某个目录下所有jar包中的mapper目录下的xml文件
rm -rf /mapper/* find /data/app/app-*/lib ! -path "*xnpush*" ! -path "*portal*" ...
- xml文件sql中大于号、小于号、等号的转义问题
1.用小于或小于等于的场景 代码1: <delete id="delOvertimeLog" parameterType="java.lang.Integer&qu ...
- mybatis的Mapper.xml文件SQL语句BadSqlGrammarException之FUNCTION错误系列
想必各位在开发过程中一定使用过:统计的功能,用到了很多SQL的函数,于是就直接写在Mapper文件中了: 比如: member_num,MAX(ID) AS newestLoanID,MIN (ID) ...
- idea通过mapper快速定位到xml文件
1.点击File找到设置(Settings) 2.点击Plugins下的 Browse respositories 3.在搜索栏搜索mybatis ,选中 Free Mybatis plugin——i ...
- idea从mapper接口跳到xml文件
- intellij idea快速通过mapper跳转到xml文件
安装完之后重启idea即可!
随机推荐
- 如何通过seo技术提高网站对用户的友好度
http://www.wocaoseo.com/thread-129-1-1.html 今天的天气又是29度,眼看着满大街的人都穿着短袖和衬衣了,自己也再不能穿个厚厚的外套出去了,要不会被别人笑 ...
- 23种设计模式 - 单一职责(Decorator - Bridge)
其他设计模式 23种设计模式(C++) 每一种都有对应理解的相关代码示例 → Git原码 ⌨ 单一职责 在软件组件的设计中,如果责任划分的不清晰,使用继承得到的结果往往是随着需求的变化,子类急剧膨胀, ...
- springboot AOP实战
目录 AOP实战 maven依赖 定义切面 采用扫描类的方式 采用注解的方式 通知 前置通知 后置通知 返回通知 异常通知 环绕通知 JoinPoint 获取切点处的注解 git AOP实战 mave ...
- 分数运算(gcd)
时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB 判断程序 Standard (来自 小小) 题目描述 计算机中采用浮点数表示所有实数,但这意味着精度丢失.例如无法精确 ...
- [MySQL]如何将大数值带上 元,万,亿 这样的单位?
要解决的问题: 某表某字段用来表示交易金额,不同记录的金额相差很大,有的只有几元几角几分,有的却上亿.如果直接就把数值在页面上展示出来,则可读性不佳.因此我们需要将其单位展示出来,如1.23元,3.4 ...
- CentOS 7常用命令
常用命令 文件与目录操作 命令 解析 cd /home 进入 ‘/home’ 目录 cd .. 返回上一级目录 cd ../.. 返回上两级目录 cd - 返回上次所在目录 cp file1 file ...
- pwnable.kr之bof
打开题目: 先下载题目给我们的两个文件,查看文件信息: 发现没有执行的权限,所以先增加文件bof的执行权限,执行: 没发现啥,然后查看代码, #include <stdio.h> #inc ...
- python sha256 键值对参数格式接口测试
# coding=utf-8 import requests import time import uuid import hashlib import hmac import random impo ...
- Python爬虫学习第一记 (翻译小助手)
1 # Python爬虫学习第一记 8.24 (代码有点小,请放大看吧) 2 3 #实现有道翻译,模块一: $fanyi.py 4 5 import urllib.request 6 import u ...
- python之unittest框架使用
一.unittest框架 unittest属于python内置的单元测试框架. 二.unittest框架的核心概念 test case:指测试用例.unittest中提供了一个基本类TestCase, ...