mybatis更新学习笔记


import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import org.apache.ibatis.session.SqlSession;

import cn.itcast.javaee.mybatis.util.MybatisUtil;

/**
* 持久层
* @author AdminTC
*/
public class StudentDao {
/**
* 有条件更新学生
*/
public void dynaUpdate(Integer id,String name,Double sal) throws Exception{
SqlSession sqlSession = null;
try{
sqlSession = MybatisUtil.getSqlSession();

Map<String,Object> map = new HashMap<String, Object>();
map.put("pid",id);
map.put("pname",name);
map.put("psal",sal);
sqlSession.update("studentNamespace.dynaUpdate",map);
sqlSession.commit();
}catch(Exception e){
e.printStackTrace();
sqlSession.rollback();
throw e;
}finally{
MybatisUtil.closeSqlSession();
}
}

public static void main(String[] args) throws Exception{
StudentDao dao = new StudentDao();
//关注SQL的变化
//dao.dynaUpdate(1,null,9000D);//update students set sal=? where id=?
//dao.dynaUpdate(1,"笨笨",null);//update students set name=? where id=?
dao.dynaUpdate(1,"笨笨",10000D);//update students set name=? and sal=? where id=?
}
}

<?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">

<mapper namespace="studentNamespace">   

    <resultMap type="cn.itcast.javaee.mybatis.app12.Student" id="studentMap">
        <id property="id" column="students_id"/>
        <result property="name" column="students_name"/>
        <result property="sal" column="students_sal"/>
    </resultMap>

    <!-- set标签自动判断哪个是最后一个字段,会自动去掉最后一个,号 -->
    <update id="dynaUpdate" parameterType="map">
        update students
        <set>
            <if test="pname!=null">
                students_name = #{pname},
            </if>
            <if test="psal!=null">
                students_sal = #{psal},
            </if>
        </set>
        where students_id = #{pid}
    </update>

</mapper>

原文地址:http://blog.51cto.com/357712148/2107439

时间: 2024-12-25 07:25:38

mybatis更新学习笔记的相关文章

关于mybatis的学习笔记

配置文件 贴出mybatis的配置文件,这里mybatis还未与spring做整合: 1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE configuration 3 PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 4 "http://mybatis.org/dtd/mybatis-3-config.dtd"&g

mybatis的学习笔记

前几天学习了mybatis,今天来复习一下它的内容. mybatis是一个基于Java的持久层框架,那就涉及到数据库的操作.首先来提出第一个问题:java有jdbc连接数据库,我们为什么还要使用框架呢?要回答这个问题,首先来看一下jdbc是怎样编程的. 1 private static String sql = "SELECT * FROM USER WHERE username = ?"; 2 3 public static void main(String[] args) thro

Mybatis超实用学习笔记

MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis .2013年11月迁移到Github 一.理解什么是MyBatis? MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架. MyBatis 消除了几乎所有的 JDBC 代码和参数的手工设置以及对结果集的检索. MyBatis 可以使用简单的XML 或注解用于配置和原始映射,将接口

3、MyBatis.Net学习笔记之增删改

增删改之前先说一下笔记1里提到的一个无法创建ISqlMapper对象的问题. <resultMaps> <resultMap id="FullResultMap" class="TUSER"> <result property="UID" column="U_ID" dbType="Int"/> <result property="UName"

MyBatis框架学习笔记(1)

1. Mybatis向dao层传入能够连接交互数据库并进行操作的对象 sqlSession 作用: - 向sql语句传入参数 - 执行sql语句 - 获取执行sql语句后的结果 - 事务的控制 2.  如何得到SqlSession: - 通过配置文件获取数据库连接相关信息 - 通过配置的相关信息构建SqlSessionFactory - 通过SqlsessionFactory打开 数据库会话(SqlSession) 3.  实体映射文件配置Mapper 数据库中的数据类型跟jdbc中的Type中

MyBatis基础学习笔记--摘录

1.MyBatis是什么? MyBatis源自于IBatis,是一个持久层框架,封装了jdbc操作数据库的过程,使得开发者只用关心sql语句,无需关心驱动加载.连接,创建statement,手动设置参数,结果集检索等jdbc底层操作. Mybatis通过xml或注解的方式将要执行的各种statement(statement.preparedStatemnt.CallableStatement)配置起来,并通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后由myb

Spring+SpringMVC+MyBatis集成学习笔记【一】

一,首先要清楚,SpringMVC其实就是Spring的一个组件       例如我们知道Spring中有类似于,AOP TX等等类似的组件,所以SpringMVC其实就是Spring的一个组件,是Spring框架的一部分,千万不要把SpringMVC当成是另一种框架!       所以在配置上,还是按照配置Spring的套路来,该配置监听,配置监听,该配置配置文件,配置配置文件,一切照旧 二,Spring在Web.xml中的配置       在Web.xml中配置Spring大致可以分为两点

mybatis参数学习笔记

1.  参数中直接加入%%,注意不需要加两个单引号,加了就会出错,因为系统会自动为字符串类型加上两个单引号 param.setUsername("%CD%");      param.setPassword("%11%"); <select id="selectPersons" resultType="person" parameterType="person"> select id,sex,a

2、MyBatis.NET学习笔记之CodeSmith使用

说明:本系列随笔会与CSDN同步发布,当然这里先发,因为这里可以用WLW.但刚才由于误操作,没有重新发上来.只好先在CSDN先发了.重往这里发时图片无法处理,索性直接粘过来吧! 使用框架后一些相关的配置如果手写起来会累死,且没有必要,技术就是用来提升工作效率的(至少我是这么认为的).实体类及配置基本上大同小 异,CTRL+C.CTRL+V 当然也可以实现,但那也不像做技术出身的风格.以前用动软的生成PETSHOP的代码.据说这个CodeSmtih挺强.就拿来用的.感觉定制性挺强,但 使用习惯什么