增删改查操作

查询

查询所有数据

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. vim 基础

    光标移动(命令模式的上下左右):k,j,h,l 保存/退出 仅保存::w 退出::q(如果有修改要先保存) 保存并退出::wq(x效果一致) 强制退出::q! 模式 命令模式:esc(当前需要处于插入 ...

  2. 逆向学习物联网-网关ESP8266-03软件编程实现

    1.技术原理及流程 1) MQTT数据通讯原理  2).网关协议运行状态机  3). 主程序流程 2.关键程序代码实现 MDK集成开发环境的搭建,大家可以百度搜索,或者参考感知层的软件设计部分. 1) ...

  3. 解决java.sql.SQLException: null, message from server: "Host 'XXX' is not allowed to connect异常

    Sqoop连接MySQL报异常.这个异常是数据库只允许localhost或127.0.0.1访问,不允许远程访问.我用的本机IP都不行. 解决办法:修改访问权限即可. 打开cmd,进入mysql fl ...

  4. mysq 报错, sql语句在数据库里运行正常, 在内网测试正常,打包放外网的时候就报下面错误

    sql语句为: select t1.day as day , any_value(IFNULL(t2.avgNum,0)) as avgNum, any_value(IFNULL(t2.maxNum, ...

  5. List一边插入数据后又移除数据

    记录最简单的三种方法,直接上代码: List<String> list = new ArrayList<>(); list.add("1"); list.a ...

  6. element-ui switch

    <el-tooltip :content="'Switch value: ' + value" placement="top"> <el-sw ...

  7. PDF转置

    import pdfplumber #全是None with pdfplumber.open(r"C:\Users\yjiang3\Desktop\Inv.pdf") as pdf ...

  8. 2.5基本算法之搜索 156:LETTERS

    #include<iostream>#include<cstdio>using namespace std;char a[21][21];bool b[26]; int X[4 ...

  9. 针对“RuntimeError: each element in list of batch should be of equal size” 问题解决

    第一次运行代码出现了这个问题: 这个问题的出现主要来源于DataLoader类中的collate.py文件造成的问题,由于每个batch里的长度不一致,因此导致出现了该问题. 通过百度方法和查看源码去 ...

  10. cmd 下运行pyhon文件.py

    第一步: wind+R打开[运行],输入cmd,点击确定 第二步: ①输入:[cd]指定pyhon文件目录 ② cd C:\Users\pc\Desktop\test ③在指定目录下输入pyhon文件 ...