增删改查操作

查询

查询所有数据

1、编写接口方法:Mapper接口------参数:无------结果:List

2、编写sql语句:SQL映射文件

一般情况下,若是用户实体类里面的变量名称数据库里面的变量名称不一致,是会显示出null,不会输出相关数据;

第一种方法------可以在UserMapper.xml文件里面,在sql语句里面起别名实现;

第二种方法------sql片段

第三种方法------resultMap:

在该标签里面,result用于一般字段的映射;而id用于主键字段的映射;

其中column存放的是数据库表里面的列名;而property存放的是实体类里面的变量名称;

3、执行方法:测试

查看详情

其中的#{}可以用来防止SQL注入问题表名或者列名不固定时,在参数传递时,#{}可以转换为?进行查询使用;

在进行查询时,也可以使用>作为查询条件,<的话,需要利用转义字符或者CDATA区进行转义:

条件查询

散装参数、对象参数、map集合参数

1、散装参数

2、对象参数:对象的属性名称要和参数占位符一致,才能够封装上值

输出即可

3、map集合参数

上面几种方法都能够实现查询

动态查询:上述方法存在一定的bug,我们有可能不会输入全部搜索框的内容,而上述方法若是有一个条件为null,会查不出来,故需要修改!

即需要实现sql语句的动态变化

主要使用到的标签:

使用动态条件查询时,主要有以下两种解决方法:

1、利用恒等式开始判断,后面的if标签里面的语句都加上and连接符

2、利用where标签进行判断,在标签里面加上三种if判断,且都加上and连接符(使用该方法居多)

选择多条件中的单个条件进行查询(动态条件查询)

存在某个条件,或者一个条件也没有时:

再进一步优化:

添加操作

//MyBatisDemo.java
//接收参数
int num=6;
int id=20214066;
int age=89;
String name="lili"; //封装对象
User user=new User();
user.setNum(num);
user.setId(id);
user.setAge(age);
user.setName(name); //1、加载MyBatis核心配置文件
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); //2、获取SqlSession对象,用它执行sql
SqlSession sqlSession=sqlSessionFactory.openSession(); //3、执行sql
//List<User> user=sqlSession.selectList("test.selectAll"); //获取UserMapper的代理对象
UserMapper userMapper=sqlSession.getMapper(UserMapper.class);
userMapper.add(user); //事务提交
sqlSession.commit(); sqlSession.close();

添加操作---主键返回

//返回添加数据的主键
<insert useGeneratedKeys="true" keyProperty="id">

修改操作

修改动态字段

使用set标签将if标签包裹起来,规避语法错误问题

删除操作

删除一个

删除多个

里面的#{num}的个数,由要删除的数据的条数决定;

注解开发

使用注解开发的话,那么UserMapper.xml就不用再写了,举例来说的话,就是这样的:

//直接在接口里面,使用注解,就省去了写.xml文件的繁琐
@Param("select * from student where id=#{id}")
User selectById(int id);

MyBatis的复习就先到这里啦!这次学起来容易了不少嘞!

下次再见!

Javaweb实践复习--MyBatis的更多相关文章

  1. Mybatis 复习 Mybatis 配置 Mybatis项目结构

    pom.xml文件已经贴在了文末.该项目不使用mybatis的mybatis-generator-core,而是手写Entities类,DaoImpl类,CoreMapper类 其中,Entities ...

  2. ideaJ+maven+javaweb实践: sevlet实现upload&download,javaIO代码

    因为工作的机器不让拷贝出来也不让发邮件出来也不让访问外网,所以文件两个PC挪来挪去很麻烦. 决定写一个网页,只有upload和download ideaJ,maven,java,tomcat 写一个j ...

  3. 复习mybatis框架(一)----映射文件

    参考博主的文章,尊重原创:https://blog.csdn.net/qq_35246620/article/details/54837618 一.给出映射文件 Mapper.xml 的总结: ① 设 ...

  4. 2018.6.19 Java核心API与高级编程实践复习总结

    Java 核心编程API与高级编程实践 第一章 异常 1.1 异常概述 在程序运行中,经常会出现一些意外情况,这些意外会导致程序出错或者崩溃而影响程序的正常执行,在java语言中,将这些程序意外称为异 ...

  5. javaweb要点复习 jsp和servlet

    jsp:就是java server page ,  html嵌入java  ,所以更方面显示(V) serlet,就是服务器端小程序 java中嵌入html,更方面业务处理. jsp执行过程 1)客户 ...

  6. Highcharts图表导出为pdf的JavaWeb实践

    写给读者的话^_^: 众所周知,基于Highcharts插件生成的svg图片组(注意这里鄙人指的组是若干图有序组合,并非一张图片,具有业务意义)导出为PDF文档是有难度滴.鄙人也曾“异想天开”用前端技 ...

  7. Mybatis老手复习文档

    Mybatis学习笔记 再次学习Mybatis,日后,有时间会把这个文档更新,改的越来越好,然后,改成新手老手通用的文档 1.我的认识 Mybatis 是一个持久层框架,(之前 我虽然学了这个myba ...

  8. IBatis 2.x 和 MyBatis 3.0.x 的区别(从 iBatis 到 MyBatis)

    从 iBatis 到 MyBatis,你准备好了吗? 对于从事 Java EE 的开发人员来说,iBatis 是一个再熟悉不过的持久层框架了,在 Hibernate.JPA 这样的一站式对象 / 关系 ...

  9. iBatis 和MyBatis区别

    从  iBatis  到  MyBatis ,你准备好了吗? 对于从事 Java EE 的开发人员来说,iBatis 是一个再熟悉不过的持久层框架了,在 Hibernate.JPA 这样的一站式对象 ...

  10. ibatis 到 MyBatis区别

    http://blog.csdn.net/techbirds_bao/article/details/9235309 简介: 本文主要讲述了 iBatis 2.x 和 MyBatis 3.0.x 的区 ...

随机推荐

  1. Java向MySQL写入中文乱码问题解决

    Java向MySQL写入中文乱码问题解决 以下仅为本人工作.学习过程中所接触到的内容,不足之处欢迎指出. 问题现象: 使用Java代码向MySQL数据库写入数据,中文字符出现乱码. 解决步骤: 1.查 ...

  2. mac常用命令和Git创建tag命令

    一.mac命令 p.p1 { margin: 0; font: 12px ".PingFang SC" } p.p2 { margin: 0; font: 12px "H ...

  3. shell语法1-概论、注释、变量、字符串

    如果感觉有点忘了或者有点懵,敲出来测试测试就好了 一:概论 Linux系统中一般默认使用bash,文件开头需要写#! /bin/bash,指明bash为脚本解释器chmod +x filename:使 ...

  4. 开发Unity3D空战类插件 战机HUD系统

    Fighter HUD System 当您使用Unity3D来开发飞行模拟或者空战类游戏时,这款Fighter HUD Sytem插件将会非常的适合用来充当您战机的HUD系统. 特点 此HUD系统的安 ...

  5. AdaptSegeNet 代码分析

    先G后D 训练 G: --S:pred1, pred2 = model(images) :  loss_seg1 = loss_calc(pred1, labels) :   loss.backwar ...

  6. gets,fgets,getchar,fgetc

    以上四个函数都是读取外部输入的函数.可以使stdin,也可以是文件.以下都是在C语言中的应用 关于gets和fgets都能够读取一行,一行结束的标志是"回车".都有弊端gets(s ...

  7. 11.25 es6

    ### 项目初始化 `npm init` `npm init -y` ### 安装项目依赖(包) `npm install` ### 安装 `npm install 包名 --save` `npm i ...

  8. Deformable DETR (ICLR2021)

    Pre-Trained Image Processing Transformer paper:https://arxiv.org/abs/2010.04159 code:https://github. ...

  9. linux 修改password

    passwd 命令,手动修改: [root@localhost testuser]# passwd testuser Changing password for user testuser. New ...

  10. 安装win10:我们无法创建新的分区,也无法定位现有分区

    操作环境:win10企业版ISO,U盘安装,UEFI启动 解决思路:win10 UEFI 安装需要硬盘在GPT模式,如果直接创建分区默认的是MBR,所以将磁盘转换成GPT,再分配一个EFI空白分区,就 ...