• MyBatis的动态SQL操作--插入


    需求:向数据库中插入一条数据

    //id,name,sal非空,三个字段都插入
    insert into student(id,name,sal) values (?,?,?)
    //id,name非空,只对id和name插入值
    insert into student(id,name) values (?,?)
    //id,sal非空
    insert into student(id,sal) values (?,?)

    为null的字段忽略掉.

    <?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">
    
    <!--
        namespace的取值可以是实体的全限定名,这样有好处!
     -->
    <mapper namespace="com.winner.entity.Student">
        <resultMap id="studentMap" type="student">
            <id property="id" column="id"/>
            <result property="name" column="name"/>
            <result property="sal" column="sal"/>
        </resultMap>
        <!-- sql片段对应字段名,id属性值任意 -->
        <sql id="key">
            <!-- 去掉最后一个, -->
            <trim suffixOverrides=",">
           //id是类的属性名
    <if test="id!=null">
             //id是表的字段名
    id,</if>
           //name是类的属性名
    <if test="name!=null">
             //name是表的字段名
    name, </if>
           //sal是类的属性名
    <if test="sal!=null">
             //sal是表的字段名
    sal, </if> </trim> </sql> <!-- sql片段对应?,id属性值任意 --> <sql id="value"> <!-- 去掉最后一个, --> <trim suffixOverrides=","> <if test="id!=null"> #{id},//肯定是调用了get方法得到的值,所以是实体类中的属性名 </if> <if test="name!=null"> #{name}, </if> <if test="sal!=null"> #{sal}, </if> </trim> </sql> <!-- <include refid="key"/>和<include refid="value"/>表示引用上面定义的sql片段 --> <insert id="dynaInsert" parameterType="Student"> INSERT INTO student(<include refid="key"/>) VALUES(<include refid="value"/>) </insert> </mapper>
    public class StudentDao {
        /**
         * 插入学生
         */
        public void dynaInsert(Student student) throws Exception{
            SqlSession sqlSession = null;
            try{
                sqlSession = MybatisUtil.getSqlSession();
                sqlSession.insert(Student.class.getName() + ".dynaInsert", student);
                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();
            //dao.dynaInsert(new Student(1,"zhangsan1",1000d));//insert into 表名(*,*,*) values(?,?,?)
            //dao.dynaInsert(new Student(3,"lisi",null));//insert into 表名(*,*) values(?,?)
            dao.dynaInsert(new Student(5,null,7000D));//insert into 表名(*,*) values(?,?)
            //dao.dynaInsert(new Student(4,null,null));//insert into 表名(*) values(?)
        }
    }
  • 相关阅读:
    python 的基础 学习 第六天 基础数据类型的操作方法 字典
    python 的基础 学习 第五天 基础数据类型的操作方法
    python 的基础 学习 第四天 基础数据类型
    ASP.NET MVC 入门8、ModelState与数据验证
    ASP.NET MVC 入门7、Hellper与数据的提交与绑定
    ASP.NET MVC 入门6、TempData
    ASP.NET MVC 入门5、View与ViewData
    ASP.NET MVC 入门4、Controller与Action
    ASP.NET MVC 入门3、Routing
    ASP.NET MVC 入门2、项目的目录结构与核心的DLL
  • 原文地址:https://www.cnblogs.com/winner-0715/p/5315142.html
Copyright © 2020-2023  润新知