增删改(DML)操作
增删改(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)操作的更多相关文章
- MySQL数据库的权限问题操作及基本增删改查操作
前面我们讲了mysql的基本内容,现在我们详细的了解一下mysql中的具体操作. what's the SQl SQL(Structured Query Language 即结构化查询语言) SQL语 ...
- mongoVUE的增删改查操作使用说明
mongoVUE的增删改查操作使用说明 一. 查询 1. 精确查询 1)右键点击集合名,再左键点击Find 或者直接点击工具栏上的Find 2)查询界面,包括四个区域 {Find}区,查询条件格式{& ...
- (转)SQLite数据库增删改查操作
原文:http://www.cnblogs.com/linjiqin/archive/2011/05/26/2059182.html SQLite数据库增删改查操作 一.使用嵌入式关系型SQLite数 ...
- 详谈easyui datagrid增删改查操作
转自:http://blog.csdn.net/abauch_d/article/details/7734395 前几天我把easyui dadtagrid的增删改查的实现代码贴了出来,发现访问量达到 ...
- Python教程:连接数据库,对数据进行增删改查操作
各位志同道合的同仁可以点击上方关注↑↑↑↑↑↑ 本教程致力于程序员快速掌握Python语言编程. 本文章内容是基于上次课程Python教程:操作数据库,MySql的安装详解 和python基础知识之上 ...
- PHP程序中使用PDO对象实现对数据库的增删改查操作的示例代码
PHP程序中使用PDO对象实现对数据库的增删改查操作(PHP+smarty) dbconn.php <?php //------------------------使用PDO方式连接数据库文件- ...
- 浅谈dataGridView使用,以及画面布局使用属性,对datagridview进行增删改查操作,以及委托使用技巧
通过几天的努力后,对datagridview使用作一些简要的介绍,该实例主要运用与通过对datagridview操作.对数据进行增删改查操作时,进行逻辑判断执行相关操作.简单的使用委托功能,实 ...
- 05_Elasticsearch 单模式下API的增删改查操作
05_Elasticsearch 单模式下API的增删改查操作 安装marvel 插件: zjtest7-redis:/usr/local/elasticsearch-2.3.4# bin/plugi ...
- JDBC连接数据库及增删改查操作
什么是JDBC?Java语言访问数据库的一种规范,是一套APIJDBC (Java Database Connectivity) API,即Java数据库编程接口,是一组标准的Java语言中的接口和类 ...
- Elasticsearch 单模式下API的增删改查操作
<pre name="code" class="html">Elasticsearch 单模式下API的增删改查操作 http://192.168. ...
随机推荐
- [No0000D6]端口-进程查询.bat
@echo off color a Title XP端口-进程查询 setlocal enabledelayedexpansion echo ╔- -╗ echo 本机开放的端口及使用该端口的进程 e ...
- tensorRT 构建推理引擎
- 剑指Offer题解(Python版)
https://blog.csdn.net/tinkle181129/article/details/79326023# 二叉树的镜像 链表中环的入口结点 删除链表中重复的结点 从尾 ...
- LeetCode 566 Reshape the Matrix 解题报告
题目要求 In MATLAB, there is a very useful function called 'reshape', which can reshape a matrix into a ...
- El表达式对照表
设置 session.getAttribute("date" "date") 取得username的值 (String)session.getValue( ...
- postman客户端的安装与使用
安装 首先下载蓝灯,为FQ做准备 登录github,输入https://github.com/getlantern/lantern,找到下载链接下载 安装并成功启动蓝灯 登录谷歌浏览器的应用市场,搜索 ...
- 什么是cookie?cookie的使用(设置,读取,删除)
1.什么是cookie? 页面用来保存信息 比如:自动登录,记住用户名 cookie的特性 同一个网站所有页面共用一套cookie ...
- Orchard Core 中数据库使用postgresql-10
在配置好Startup.cs后,运行程序: 首先需要设置一些基本信息.这里我试着配置如下,数据库使用postgresql,连接字符串像这样: Host=192.168.0.111;UserName=u ...
- 洛谷P2329 栅栏 [SCOI2005] 搜索
正解:搜索 解题报告: 先放下传送门! 首先说下爆搜趴,就直接枚每个需求是否被满足以及如果满足切哪个板子,随便加个最优性剪枝,似乎是有80pts 然后思考优化 首先显然尽量满足需求比较小的,显然如果能 ...
- kali蓝牙连接
http://blog.csdn.net/hailangnet/article/details/47723181 http://www.aiuxian.com/article/p-3012084.ht ...