Javaweb实践复习--MyBatis
增删改查操作
查询
查询所有数据
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的更多相关文章
- Mybatis 复习 Mybatis 配置 Mybatis项目结构
pom.xml文件已经贴在了文末.该项目不使用mybatis的mybatis-generator-core,而是手写Entities类,DaoImpl类,CoreMapper类 其中,Entities ...
- ideaJ+maven+javaweb实践: sevlet实现upload&download,javaIO代码
因为工作的机器不让拷贝出来也不让发邮件出来也不让访问外网,所以文件两个PC挪来挪去很麻烦. 决定写一个网页,只有upload和download ideaJ,maven,java,tomcat 写一个j ...
- 复习mybatis框架(一)----映射文件
参考博主的文章,尊重原创:https://blog.csdn.net/qq_35246620/article/details/54837618 一.给出映射文件 Mapper.xml 的总结: ① 设 ...
- 2018.6.19 Java核心API与高级编程实践复习总结
Java 核心编程API与高级编程实践 第一章 异常 1.1 异常概述 在程序运行中,经常会出现一些意外情况,这些意外会导致程序出错或者崩溃而影响程序的正常执行,在java语言中,将这些程序意外称为异 ...
- javaweb要点复习 jsp和servlet
jsp:就是java server page , html嵌入java ,所以更方面显示(V) serlet,就是服务器端小程序 java中嵌入html,更方面业务处理. jsp执行过程 1)客户 ...
- Highcharts图表导出为pdf的JavaWeb实践
写给读者的话^_^: 众所周知,基于Highcharts插件生成的svg图片组(注意这里鄙人指的组是若干图有序组合,并非一张图片,具有业务意义)导出为PDF文档是有难度滴.鄙人也曾“异想天开”用前端技 ...
- Mybatis老手复习文档
Mybatis学习笔记 再次学习Mybatis,日后,有时间会把这个文档更新,改的越来越好,然后,改成新手老手通用的文档 1.我的认识 Mybatis 是一个持久层框架,(之前 我虽然学了这个myba ...
- IBatis 2.x 和 MyBatis 3.0.x 的区别(从 iBatis 到 MyBatis)
从 iBatis 到 MyBatis,你准备好了吗? 对于从事 Java EE 的开发人员来说,iBatis 是一个再熟悉不过的持久层框架了,在 Hibernate.JPA 这样的一站式对象 / 关系 ...
- iBatis 和MyBatis区别
从 iBatis 到 MyBatis ,你准备好了吗? 对于从事 Java EE 的开发人员来说,iBatis 是一个再熟悉不过的持久层框架了,在 Hibernate.JPA 这样的一站式对象 ...
- ibatis 到 MyBatis区别
http://blog.csdn.net/techbirds_bao/article/details/9235309 简介: 本文主要讲述了 iBatis 2.x 和 MyBatis 3.0.x 的区 ...
随机推荐
- while read line 中使用ssh只能读取一行
问题:while read line 中使用ssh只能读取一行? #!/bin/sh while read line do echo $line ssh root@$line "echo 1 ...
- 机器学习——常见的backbone
参考链接:https://www.zhihu.com/question/396811409/answer/1252521120 LeNet:5层轻量级网络,一般用来验证小型数据: AlexNet/VG ...
- spider_爬取内涵吧的段子(二级深度爬取)
'''爬取内涵吧段子所有笑话(带标题,作者)总结:解码上,使用gbk2312编码的,我们可以采取gbk解码. 不会报错'''from fake_useragent import FakeUserAge ...
- 解决xpath提取的数据列表,保存时不能一一对应的问题
"""拉链函数,zip将几个列表的数据进行封装,一一对应.如果一方列表的数据,比另一方少,那么按数据少的一方对应"""# 数据个数对应相等l ...
- 解决动态class展示问题
由于部分涉及到隐私,就打马赛克了 比如这个小问题,我有这个动态的class,里面是十几个类似btn的按钮,然后每个btn下面又有子多选框,一开始是我点击那个下面的子级他的父级就被选中,默认选中第一个父 ...
- <鸳鸯刀>&<白马啸西风>随笔
这两部作品比较小众,也不如之前的作品优秀,因此简单写一下好了. <鸳鸯刀> 陕西西安府威信镖局的总镖头."铁鞭镇八方"周威信,带领一支七十多人的镖队正前往京城.路途之上 ...
- java 操作PDF (spire.pdf)api
https://www.e-iceblue.cn/pdf_java_image_shapes/replace-image-with-new-image-in-pdf-in-java.html mave ...
- tp 获取器的使用中应该怎么append 自定义数据
$data = model('organization_area')->getListByNoPage($where, 'create_time asc');foreach ($data as ...
- Shell 更多结构化命令(流程控制)
更多的结构化命令 上一章里,你看到了如何通过检查命令的输出和变量的值来改变 shell 脚本程序的流程.本章会继续介绍能够控制 shell 脚本流程的结构化命令.你会了解如何重复一些过程和命令,也就是 ...
- leetcode 1636
一些关于hashmap和list的用法 class Solution { public int[] frequencySort(int[] nums) { Map<Integer, Intege ...