增删改查操作

查询

查询所有数据

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. 单文件WSDL,非模块化

    最近在使用CXF做WebService Sever端,接口与实现类不在一个包下. 实现类如下: 1 @WebService(serviceName = "Demo" 2 , tar ...

  2. 063_Apex 的 Test类说明

    @isTest public class TestUtil { public static void createTestAccounts() { // Create some test accoun ...

  3. C++ OnlineJudge

    基本输入输出 1.接收多行数据,直到文件末尾 1 #include <iostream> 2 //#include <bits/stdc++.h> 3 #include < ...

  4. Ajax同步和异步的区别,如何解决跨域的问题

    同步的概念应该是来自于OS中关于同步的概念:不同进程为协同完成某项工作而在先后次序上调整(通过阻塞,唤醒等方式),同步强调的是顺序性,谁先谁后,异步则不存在这种顺序性. 同步:浏览器访问服务器请求,用 ...

  5. SpringBoot怎么管理封装java包的关系

    首先SpringBoot直接写注解加依赖就可以了,基本上不用写xml,非常方便,在这里我只写了两个核心包 为什么选择jar类型? SpringBoot基本上是个应用程序了,只要用java命令程序去运行 ...

  6. 操作系统|03.Linux基础(2)

    Linux基础(二) 3.vim编辑器 命令模式:控制光标移动,对文本进行删除.复制.粘贴等工作.编辑模式:正常的文本录入.末行模式:保存.退出和设置编辑环境. 3.1命令模式常用命令 -r:恢复系统 ...

  7. deepin系统编辑pdf文件的两个简单方法(终端命令行模式)

    DEEPIN深度系统编辑PDF文件有时竟然超级简单好用,比WINDOWS系统需要单独下载一个PDF编辑软件的方法强多了,而且windows系统PDF编辑软件还有版权限制,各种作啊. 下面的两条命令,使 ...

  8. 模拟法NOIP题单

    模拟算法的试题训练, 重点针对试题分析环节的练习锻炼!! 考察阅读能力.分析能力.建模能力! 模拟法题目是最基础的题目,她不难,她复杂,她的实现往往需要足够的细心耐心! 练习这类题目能够使你掌握其他算 ...

  9. cf823div2C

    cf823div2C 题目链接 题目 给你两个字符串\(s_1,s_2\).每次操作可以让\(s_1\)的前k个和\(s_2\)的后k个交换.询问是否可以通过多次上述操作,使得\(s_1=s_2\). ...

  10. 线程安全与数据结构JAVA

    线程 线程与进程本质的区别在于每个进程拥有自己的一整套变量, 而线程之间可以有共享变量.另外创建.销毁一个线程的代价比启动新进程的代价要小. 在java中,没有可以强制线程终止的方法,然而, inte ...