当前位置: 首页 > news >正文

Mapper.xml映射文件

Mapper.xml映射文件:
 <select>  resultType如果返回的是集合,那么应该设置为集合包含的类型而不是集合本身的类型
如果参数类型是pojo类型,参数名必须是pojo中的属性名
<insert>
session.commit();
session = factory.openSession();

driver:com.mysql.jdbc.Driver
url:jdbc:mysql://127.0.0.1:3306/test
动态sql:
小于号
<![CDATA[<=]]>
:

<where>:
<if test="sal != null">
and sal <![CDATA[<=]]>#{sal}         //and,or会自动给去掉
</where>
choose when otherwise:
when otherwise中只走一个
select * from emp where
<choose><when test="sal != null">sal <![CDATA[<=]]> #{sal}</when><when test="ename != null">ename like concat('%',#{ename},'%')</when><otherwise>deptno=#{deptno}<otherwise>
</choose>

trim标签  组合 if标签 主要功能 可以在自己包含的内容前面加上某些前缀,也可以在其后加上某些后缀,与之对应的属性是prefix和suffix;
            可以把包含内容的首部某些内容覆盖,即忽略,也可以把尾部的某些内容覆盖,对应的属性是prefixOverrides和suffixOverrides

insert into emp
<trim prefix="("  suffix=")" suffixOverrides = ","><if test = "empno != null">empno,<if test = "ename != null">ename,<if test = "mgr != null">mgr,<if test = "sal != null">sal,<if test = "deptno != null">deptnol,
</trim>
values
<trim prefix="("  suffix=")" suffixOverrides = ","><if test = "empno !=null">#{empno},<if test = "ename != null">#{ename},<if test = "mgr != null">#{mgr},<if test = "sal != null">#{sal},<if test = "deptno != null">#{deptnol},
</trim>


<set>标签: 如果包含的语句以逗号结束会把逗号省略掉

update   emp
<set><if test="sal != null">sal=#{sal},</if><if test="mgr != null">mgr=#{mgr},</if><if test="ename != null">ename=#{ename},</if>
</set>
<where><if test="empno != null">and empno = #{empno}</if><if test="job != null">and job =  #{job}</if>
</where>

<foreach>主要用在构建in条件中,它可以在SQL语句中迭代一个集合
item 表示集合中每一个元素进行迭代时的别名
index指定一个名字,用于表示在迭代过程中,每次迭代到的位置
[LIST]:

select * from emp 
<where><foreach collection = "list" open = "(" close = ")" item="empno" seperator="or">empno=#{empno}</foreach>
</where>select * from emp where empno in <foreach collection = "list" open = "(" close = ")" item="empno" seperator=",">#{empno}</foreach>
</where>


[array]:
paramaterType = List

select * from emp where empno in <foreach collection = "array" open = "(" close = ")" item="empno" seperator=",">#{empno}</foreach>
</where>
[map]:

(Map<String,List<Integer> map>)
多条件复杂查询的时候
List<Emp> selectEmpByMapinfo(Map<String,object>);

<select id = "selectEmpByMapinfo" paramaterType="java.util.Map" resultType="emp">select * from emp<where>deptno=#{deptnokey}andename like '%${enamekey}%'andempno in<foreach collection="empnos" open="(" close=")" separator="," item="no">#{no}</foreach></where>
</select>.


map.put("deptnokey",10)
map.put("enamekey","enamekey")
map.put(empnos,list)
[SQL片段]:

<sql id="sqlid">select * from emp
</sql>
<include refid="sqlid"></include>


[bind]标签

<select><bind name="name" value="'%' + ename + '%'">select * from emp<where><if test="sal != null">and sal <![CDATA[ <= ]]>#{sal]</if><if test="ename != null">and ename like #{name}</if></where>
</select>

resultType实现一对一 
多对多:

<collection property="ods" ofType="orderDetail" >
</collection>
<association property="items" javaType="items">
</association>


SqlSessionFactory factory;
Inputstream stream = Resources.getResourceasStream("SqlMapConfig.xml");
factory = SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder().build(stream)
 
page工具类实现分页:page工具类:
PageHelper.startPage((page- 1)* size,size)

相关文章:

  • 【笔记】Python学习记录
  • Windows 11 安装 Scoop
  • Mysql数据库:索引管理
  • 【算法与数据结构】二叉树(前中后)序遍历
  • 自营、入驻商城小程序开发
  • Charles 工具如何做断点测试?
  • 流畅的 Python 第二版(GPT 重译)(二)
  • Elastic-Job 分布式任务调度
  • 外包干了14天,技术退步明显。。。
  • 【数据库】SQL Server 2008 R2 安装过程
  • 数据结构之排序一
  • 第六章 Java 正则表达式
  • 34-Java传输对象模式 ( Transfer Object Pattern )
  • CTF题型 md5考法例题汇总
  • Pygame基础0-说明目录
  • 0x05 Python数据分析,Anaconda八斩刀
  • JSDuck 与 AngularJS 融合技巧
  • Map集合、散列表、红黑树介绍
  • NLPIR语义挖掘平台推动行业大数据应用服务
  • quasar-framework cnodejs社区
  • Spark RDD学习: aggregate函数
  • Terraform入门 - 3. 变更基础设施
  • 从零开始学习部署
  • 得到一个数组中任意X个元素的所有组合 即C(n,m)
  • 前端
  • 写代码的正确姿势
  • 学习Vue.js的五个小例子
  • 在electron中实现跨域请求,无需更改服务器端设置
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • ​一些不规范的GTID使用场景
  • #define
  • #QT(智能家居界面-界面切换)
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • ( 用例图)定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现
  • (草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
  • (二)正点原子I.MX6ULL u-boot移植
  • (附源码)python旅游推荐系统 毕业设计 250623
  • (附源码)springboot宠物管理系统 毕业设计 121654
  • (附源码)计算机毕业设计ssm本地美食推荐平台
  • (论文阅读32/100)Flowing convnets for human pose estimation in videos
  • (三) diretfbrc详解
  • (一)插入排序
  • (一)硬件制作--从零开始自制linux掌上电脑(F1C200S) <嵌入式项目>
  • (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  • (转)GCC在C语言中内嵌汇编 asm __volatile__
  • **CI中自动类加载的用法总结
  • .NET 2.0中新增的一些TryGet,TryParse等方法
  • .Net MVC + EF搭建学生管理系统
  • .net 写了一个支持重试、熔断和超时策略的 HttpClient 实例池
  • .NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)
  • ?
  • @Autowired 与@Resource的区别
  • @modelattribute注解用postman测试怎么传参_接口测试之问题挖掘
  • @serverendpoint注解_SpringBoot 使用WebSocket打造在线聊天室(基于注解)
  • @SuppressWarnings(unchecked)代码的作用