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 的区 ...
随机推荐
- TypeScript - 构造函数 constructor
class Dog { // 需要先定义,才能在constructor中this指向 name: string; age: number; // 构造函数,会在对象创建时调用 // new Dog() ...
- 记一次前端ajax禁止使用异步async的操作
环境: 前端layui jquery 情况: 页面在iframe里面, 然后点击按钮,弹出输入框.点击确认,弹出框发送内容到后台, 传送数据到后台后,然后根据返回一个map给前端.前端解析数据,返回 ...
- C语言II一作业02
1.作业头 | 这个作业属于哪个课程 | < https://edu.cnblogs.com/campus/zswxy/SE2020-3> | | ---- | ---- | ---- | ...
- Python 删除文件及文件夹
2种方式: [不删除给定的目录] path1 = "D:\\dev\\workspace\\python\\pytestDemo\\222" def del_filedir(pat ...
- Ubuntu系统运行Steam中VR游戏的相关软件环境配置说明
ubuntu下的SteamVR(HTCVive)设置教程 贴吧链接 https://tieba.baidu.com/p/5333529880 运行SteamVR出现的一些问题解决方案参考链接 ...
- AS3.0和php数据交互POST方式
AS3.0和php数据交互POST方式首先打开flash建立一个as3.0的文件拖 textarea和button组建到舞台上分别给两个组件命名:txtcontent和addcontent然后点第一帧 ...
- Debug --> CICFlowMeter的java版本安装及使用
一. 首先,给出一个很详细的配置链接!使用IDEA进行配置~ https://blog.csdn.net/BananaMan45/article/details/105473151?utm_mediu ...
- 狐漠漠养成日记 Cp.00001 开始养成计划
开始养成计划 今天是我开始这个"狐漠漠养成计划"的第一天(划掉). 看来是昨天出门前忘记保存了,昨天写的几百字内容全都没有了,今天其实已经是计划开始的第二天了. 因为昨天晚上出去喝 ...
- Android studio应用
菜单的使用 public class FirstActivity extends AppCompatActivity { @Override protected void onCreate(Bundl ...
- windows 切换路径