1. 增删改(DML)操作

1.1事务(transaction)

  • 事务是数据库操作的最小单元,又ACID的特性,应该保证一个事务的sql语句要么同时成功,要么都不成功。
  • Mybatis中配置了事务管理器,type属性设置为JDBC。表示M ybatis采用和原生JDBC相同的事务管理机制。
  • 在Mybatis执行的开始时,将自动提交功能关闭了。所以,在执行DML操作时,需要手动提交事务。

  设置为sqlsession.openSession(true); 则可以自动提交。

   默认情况下是false。如果不设置true,则conn.autocommit(false),dml操作是必须手动提交。

1.2新增(insert)

 <?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<properties resource="db.properties"/>
<settings>
<!-- 设置MyBatis使用log4j日志支持 -->
<setting name="logImpl" value="LOG4J"/>
</settings>
<!-- typeAliases给类型取别名 -->
<typeAliases>
<!-- 给user类取别名 -->
<!-- <typeAlias type="com.bjsxt.pojo.User" alias="u"/> -->
<!-- 别名都是类的名字 -->
<package name="com.bjsxt.pojo"/>
</typeAliases>
<!-- 用于指定使用哪个开发
用于指定使用的环境id
-->
<environments default="dev">
<!-- 用于配置开发环境
id:环境的唯一识别码
-->
<environment id="dev">
<!-- 事务管理器
type:用于设定mybatis采用什么方式管理事务
JDBC表示和JDBC一样事务的管理方式
-->
<transactionManager type="JDBC"/>
<!-- 数据源/连接池
用于配置链接池和数据库链接的参数
type:用于设置mybatis是否采用链接池技术
连接池:用来存数据库链接的,减少数据库的频繁开关
POOLED表示mybatis采用连接池技术
-->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<!-- 扫描mapper文件 -->
<!-- 文件的全限制路径要用/ -->
<mappers>
<mapper resource="com/bjsxt/mapper/UserMapper.xml"/>
</mappers>
</configuration>

 1 <?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-|3-mapper.dtd">
<!-- namespa:命名空间,可以随意定义,一般情况下要写全限定路径(包名加类)
MyBatis管理SQL语句是通过namespace+id来定位的
-->
<mapper namespace="com.bjsxt.mapper.UserMapper">
<!-- 新增 -->
<insert id="insUser" parameterType="user" >
insert into t_user values (default,#{username},#{password})
</insert> </mapper>
 package com.bjsxt.util;

 import java.io.IOException;
import java.io.InputStream; import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder; public class MyBatisUtil { private static SqlSessionFactory factory=null;
static{ try {
InputStream is=Resources.getResourceAsStream("mybatis.xml");
factory=new SqlSessionFactoryBuilder().build(is);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} public static SqlSession getSession(){
SqlSession session =null;
if(factory!=null){
//true表示开启
session= factory.openSession(true);
}
return session;
}
}
 package com.bjsxt.test;

 import org.apache.ibatis.session.SqlSession;
import org.junit.Test; import com.bjsxt.pojo.User;
import com.bjsxt.util.MyBatisUtil; public class TestInsert {
@Test
public void testIns(){
SqlSession session = MyBatisUtil.getSession();
User user=new User();
user.setUsername("XIAOWEI");
user.setPassword("123"); int num=session.insert("com.bjsxt.mapper.UserMapper.insUser",user);
if(num>0){
//提交事务
//session.commit();
System.out.println("SUCCESS!");
}else{
//session.rollback();
System.out.println("FAILED!");
}
//
session.close();
}
}

1.4修改和删除

 <?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-|3-mapper.dtd">
<!-- namespa:命名空间,可以随意定义,一般情况下要写全限定路径(包名加类)
MyBatis管理SQL语句是通过namespace+id来定位的
-->
<mapper namespace="com.bjsxt.mapper.UserMapper">
<!-- 新增 -->
<insert id="insUser" parameterType="user" >
insert into t_user values (4,#{username},#{password})
</insert> <!-- 修改 -->
<update id="updUser" parameterType="user" >
update t_user set username=#{username},password=#{password} where id=#{id}
</update> <!-- 删除 -->
<delete id="delUser" parameterType="int">
delete from t_user where id=#{0}
</delete>
</mapper>
 package com.bjsxt.test;

 import org.apache.ibatis.session.SqlSession;
import org.junit.Test; import com.bjsxt.pojo.User;
import com.bjsxt.util.MyBatisUtil; public class TestInsert {
@Test
public void testDel(){
SqlSession session =MyBatisUtil.getSession(); int num=session.update("com.bjsxt.mapper.UserMapper.delUser", 9);
if(num>0){
session.commit();
System.out.println("success"); }else
{
System.out.println("false");
session.rollback();
}
session.close();
}
@Test
public void testUpd(){
SqlSession session = MyBatisUtil.getSession(); User user1=new User();
user1.setId(4);
user1.setUsername("daming");
user1.setPassword("abc"); int num=session.update("com.bjsxt.mapper.UserMapper.updUser", user1);
if(num>0){
session.commit();
System.out.println("success"); }else
{
System.out.println("false");
session.rollback();
}
session.close();
}
@Test
public void testIns(){
SqlSession session = MyBatisUtil.getSession();
User user=new User();
user.setUsername("XIAOWEI");
user.setPassword("123"); int num=session.insert("com.bjsxt.mapper.UserMapper.insUser",user);
if(num>0){
//提交事务
//session.commit();
System.out.println("SUCCESS!");
}else{
//session.rollback();
System.out.println("FAILED!");
}
//
session.close();
}
}

增删改(DML)操作的更多相关文章

  1. MySQL数据库的权限问题操作及基本增删改查操作

    前面我们讲了mysql的基本内容,现在我们详细的了解一下mysql中的具体操作. what's the SQl SQL(Structured Query Language 即结构化查询语言) SQL语 ...

  2. mongoVUE的增删改查操作使用说明

    mongoVUE的增删改查操作使用说明 一. 查询 1. 精确查询 1)右键点击集合名,再左键点击Find 或者直接点击工具栏上的Find 2)查询界面,包括四个区域 {Find}区,查询条件格式{& ...

  3. (转)SQLite数据库增删改查操作

    原文:http://www.cnblogs.com/linjiqin/archive/2011/05/26/2059182.html SQLite数据库增删改查操作 一.使用嵌入式关系型SQLite数 ...

  4. 详谈easyui datagrid增删改查操作

    转自:http://blog.csdn.net/abauch_d/article/details/7734395 前几天我把easyui dadtagrid的增删改查的实现代码贴了出来,发现访问量达到 ...

  5. Python教程:连接数据库,对数据进行增删改查操作

    各位志同道合的同仁可以点击上方关注↑↑↑↑↑↑ 本教程致力于程序员快速掌握Python语言编程. 本文章内容是基于上次课程Python教程:操作数据库,MySql的安装详解 和python基础知识之上 ...

  6. PHP程序中使用PDO对象实现对数据库的增删改查操作的示例代码

    PHP程序中使用PDO对象实现对数据库的增删改查操作(PHP+smarty) dbconn.php <?php //------------------------使用PDO方式连接数据库文件- ...

  7. 浅谈dataGridView使用,以及画面布局使用属性,对datagridview进行增删改查操作,以及委托使用技巧

        通过几天的努力后,对datagridview使用作一些简要的介绍,该实例主要运用与通过对datagridview操作.对数据进行增删改查操作时,进行逻辑判断执行相关操作.简单的使用委托功能,实 ...

  8. 05_Elasticsearch 单模式下API的增删改查操作

    05_Elasticsearch 单模式下API的增删改查操作 安装marvel 插件: zjtest7-redis:/usr/local/elasticsearch-2.3.4# bin/plugi ...

  9. JDBC连接数据库及增删改查操作

    什么是JDBC?Java语言访问数据库的一种规范,是一套APIJDBC (Java Database Connectivity) API,即Java数据库编程接口,是一组标准的Java语言中的接口和类 ...

  10. Elasticsearch 单模式下API的增删改查操作

    <pre name="code" class="html">Elasticsearch 单模式下API的增删改查操作 http://192.168. ...

随机推荐

  1. sql的sp存储过程详解

    store procedure (存储过程) http://www.cnblogs.com/xiangzhong/p/5038338.html 调优的几个关键的步骤--sp_lock,sp_who h ...

  2. 20165311学习基础和C语言基础调查

    一.技能学习经验 有什么技能比90%的人更好? 这个问题问的就很emmmm..我觉得自己的推理和逻辑思维能力比较出众,面对新事物的自学速度比较快. 针对技能谈一下成功的经验. 每一项出众的技能都是与平 ...

  3. eclipse 注销和取消注销

    单行注释: CTRL + / 当行取消注释(一样的): CTRL + / 多行注释: CTRL + SHIFT + / 多行取消注释(斜杠换成反斜杠): CTRL + SHIFT + \

  4. python-----实现接口自动化测试(实例4)

    实现接口自动化测试1.读取case---从测试用例Excel表格中读取接口请求数据2.调用接口---发送请求获取实际结果3.校验结果---实际结果与预期结果对比4.结果写入表格---将实际结果与测试状 ...

  5. Mean reversion (finance) 均值回归

    Mean reversion (finance)  均值回归

  6. 【基本功】Java动态追踪技术探究 不重启JVM,替换掉已经加载的类?不重启JVM,获知运行时对象的属性

    https://mp.weixin.qq.com/s/_hSaI5yMvPTWxvFgl-UItA 小结: 1.根据Java的类加载机制,在同一个ClassLoader中,类是不允许重复的: 2.单例 ...

  7. 2012年蓝桥杯省赛A组c++第2题(暴力求解古堡算式)

    /* 古堡算式 福尔摩斯到某古堡探险,看到门上写着一个奇怪的算式: ABCDE * ? = EDCBA 他对华生说:“ABCDE应该代表不同的数字,问号也代表某个数字!” 华生:“我猜也是!” 于是, ...

  8. ACM:油田(Oil Deposits,UVa 572)

    /* Oil Deposits Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Tot ...

  9. openssh源码分析笔记

    1.客户端保活: options.client_alive_interval options.client_alive_count_max 在wait_until_can_do_something() ...

  10. monitor

    // ==UserScript== // @name Page Monitor // @namespace http://tampermonkey.net/ // @version 0.1 // @d ...