MyBaits基本操作,为什么session.commit()可以引起事物提交?ResultMap结果映射,执行添加后返回自增列的值,多条件查询,智能标签,工具类

1.为什么session.commit()可以引起事务的提交?

首先打开commit()源码,ctrl+H打开它的实现类DefaultSession,找到它的commit方法

ctrl+左键executor,进入它的接口并打开它的实现类BaseExecutor

在最底层的commit()方法里边进行了事务的提交,所以SqlSession.commit()方法可以引起事务的提交

2.ResultMap结果映射

为什么需要ResultMap?

因为DB中的Table的列名和Java对象中的属性名不一致时需要手工映射

ResultMap实现代码

注:select标签中的resultMap和resultType不允许同时出现

3.执行添加后返回自增列的值

首先在insert节点中添加一个selectKey节点配置如下

属性keyProperty的值要和实体类中的id属性一致

4.多条件查询

多条件查询可以使用Map集合查询,也可以使用索引号查询

实体类实现代码

5.智能标签

智能标签分为:where ,if ,choose,foreach

where if类似于多重if判断

choose类似于switch结构

foreachArray类型

foreach<自定义>

foreachList类型

原文地址:https://www.cnblogs.com/xuchangqi1/p/8467538.html

时间: 2024-11-02 23:38:43

MyBaits基本操作,为什么session.commit()可以引起事物提交?ResultMap结果映射,执行添加后返回自增列的值,多条件查询,智能标签,工具类的相关文章

事物的一致性:向数据库中插入同一属性不同列的值,出现异常,致使出现异常前后,数据都无法插入

主要是使用connection的三个方法实现: 开始事物:取消默认提交:connection.setAutoCommit(false);//其可选择false和true 都成功提交事物:connection.commit(); 回滚事物:connection.rollback(); ------------------------------------------------------------------------------------------------------------

为什么要用Hibernate框架? 把SessionFactory,Session,Transcational封装成包含crud的工具类并且处理了事务,那不是用不着spring了?

既然用Hibernate框架访问管理持久层,那为何又提到用Spring来管理以及整合Hibernate呢?把SessionFactory,Session,Transcational封装成包含crud的工具类并且处理了事务,那不是用不着spring了? Hibernate操作的步骤如下: 1. 获得Configuration对象 2. 创建SessionFactory 3. 创建Session 4. 打开事务 5. 进行持久化操作.比如上面的添加用户操作 6. 提交事务 7. 发生异常,回滚事务

Hibernate5-进阶添加工具类,对获取Session的方法封装

1.创建项目,项目名称hibernatedemo3,目录结构如图所示 2.在项目中创建lib目录存储jar文件,目录结构如图所示 3.在src目录中创建实体Bean Forum,包名(com.mycompany.demo.bean),如图所示 4.实体Bean Forum的内容如下 package com.mycompany.demo.bean; public class Forum { private int fid; private String name; public Forum() {

mybatis使用的一点小结:session运行模式及批量提交(转)

mybatis的执行器有三种类型: ExecutorType.SIMPLE 这个类型不做特殊的事情,它只为每个语句创建一个PreparedStatement. ExecutorType.REUSE 这种类型将重复使用PreparedStatements. ExecutorType.BATCH 这个类型批量更新,且必要地区别开其中的select 语句,确保动作易于理解. 可以在配置sqlSession时指定相应的类型: [html] view plain copy <bean id="fsa

session工具类作为项目中使用【注意注册为对象内方法的array使用】、分类的使用、验证码【重点】

1.实现session的入库工具类注意在注册使用的方法和函数的区别在于:spl_autoload_register('handle');//这样注册的是一个函数spl_autoload_register(array(object,handle));//此时是一个对象的指定方法,使用类名进行调用的情形也是这样的 这种情况在session_set_save_handle();//也是这么使用的 session入库的工具类就是一个比较好用的工具[注意实现的工具类的设计和实现的工作:工具类相当于做扩展功

JavaWeb学习总结(十三)——使用Session防止表单重复提交

在平时开发中,如果网速比较慢的情况下,用户提交表单后,发现服务器半天都没有响应,那么用户可能会以为是自己没有提交表单,就会再点击提交按钮重复提交表单,我们在开发中必须防止表单重复提交. 一.表单重复提交的常见应用场景 有如下的form.jsp页面 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 <!DOCTYPE HTML>

10-客户端防表单重复提交和服务器端session防表单重复提交

/****************************************************DoFormServlet********************************************************/ package session; import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import

循环保存的对象在事物提交后发现只保存了一个对象

有时候我们在使用事务循环保存多个对象时,可能会出现在提交事务后发现只保存了最后一个对象 例如 public void saveSystemDDL(SystemDDLPojo systemDDLPojo) {        String keywordname = systemDDLPojo.getKeywordname();        String[] ite = systemDDLPojo.getItemname();        String typeflag = systemDDLP

利用session防止表单重复提交

转自:http://www.cnblogs.com/xdp-gacl/p/3859416.html 利用Session防止表单重复提交 对于[场景二]和[场景三]导致表单重复提交的问题,既然客户端无法解决,那么就在服务器端解决,在服务器端解决就需要用到session了. 具体的做法:在服务器端生成一个唯一的随机标识号,专业术语称为Token(令牌),同时在当前用户的Session域中保存这个Token.然后将Token发送到客户端的Form表单中,在Form表单中使用隐藏域来存储这个Token,