• JAVA之Mybatis基础入门二 -- 新增、更新、删除


      上一节说了Mybatis的框架搭建和简单查询,这次我们来说一说用Mybatis进行基本的增删改操作;

     一、 插入一条数据

    1、首先编写USER.XML(表的xml)使用insert元素,元素写在mapper中:

    <insert id="insertitem" parameterType="cn.qkp.po.user">
    INSERT INTO user(username,birthday,sex,address) VALUES(#{username},#{ birthday},#{sex},#{address})
    </insert>

    注意:这里的parameterType使用了实体对象的类型。因为#{}和${}可以接收pojo数据,可以使用OGNL解析出pojo的属性值;如:#{username}为获取pojo中username的属性值,切记使用实体对象类型,在大括号中要保持数据一致

    2、在运行java文件中的代码(MybatisFrist.java中):

        @Test
        public void start3(){
            SqlSession session = sqlsessionfactory.openSession();//打开SqlSession
            User user = new User();//创建实体对象
            user.setUsername("mylydg");
            user.setSex("1");
            user.setBirthday(new Date());
            session.insert("test.insertUser", user);//执行插入
            session.commit();//提交事务
            session.close();//关闭连接
        }

    以上便是基本的数据插入操作,使用对象来操作Mybatis进行插入;

    PS:拓展(如何获得插入数据的主键返回)?

    看如下代码操作:

    1.1、在insert元素中使用selectKey元素

    <insert id="insertitem" parameterType="cn.qkp.pojo.user">
    <!-- 1、语句select LAST_INSERT_ID()为查找最后插入元素的id
         2、order属性表示相对insert语句在什么时候执行,有两个参数"AFTER"之后和"BEFORE"之前
         3、resultType属性表示返回值的类型
         4、keyProperty表示返回到的属性,切记要与insert中的parameterType类型的值相同,它会把值返回给parameterType对象
     -->
    <selectKey order="AFTER" resultType="int" keyProperty="id"> 
    select LAST_INSERT_ID()
    </selectKey>

    1.2、在运行java文件中的代码(MybatisFrist.java中)直接通过之前传入的对象的user.Id获得即可

        @Test
        public void start3(){
            SqlSession session = sqlsessionfactory.openSession();//打开SqlSession
    User user = new User();//创建实体对象 user.setUsername("mylydg"); user.setSex("1"); user.setBirthday(new Date());
    session.insert(
    "test.insertUser", user);//执行插入 session.commit();//提交事务 session.close();//关闭连接 System.out.println("the id ="+user.getId());//获得主键并打印 }

    二、更新数据操作

    1、在表xml(user.xml,写在mapper中):

        <update id="update" parameterType="cn.qkp.mybatis.po.User">
        update user set username = #{username},sex = #{sex},birthday = #{birthday},address = #{address} where id=#{id}
        </update>

    2、在运行java文件中的代码(MybatisFrist.java中):

        @Test
        public void update(){
            //通过工厂类打开数据接口
            SqlSession sqlsession = sqlsessionfactory.openSession();
            //设置接收对象
            User user = new User();;
            user.setUsername("mylydg");
            user.setSex("1");
            user.setBirthday(new Date());
            user.setAddress("the address");
            user.setId(27);
            try {
                //查询数据selectOne为查询一条的方法第一个参数是user.xml中的namespace.id;第二个参数是user配置文件中的#{id}
                sqlsession.update("test.update", user);
                sqlsession.commit();
            } catch (Exception e) {
                // TODO: handle exception
            }finally{
                sqlsession.close();//读完要关闭sqlsession
            }
             System.out.println("the id ="+user.getId());//打印输出
        }

    运行方法后,则可以更新指定id的一条数据

    三、删除一条数据的操作

    1、在表xml文件(user.xml,写在mapper中):

        <delete id="delete" parameterType="int">
        delete from user where id = #{id}
        </delete>

    2、在运行java文件中的代码(MybatisFrist.java中):

        @Test
        public void delete(){
            //通过工厂类打开数据接口
            SqlSession sqlsession = sqlsessionfactory.openSession();
            try {
                //查询数据selectOne为查询一条的方法第一个参数是user.xml中的namespace.id;第二个参数是user配置文件中的#{id}
                sqlsession.delete("test.delete", 27);
                sqlsession.commit();
            } catch (Exception e) {
                // TODO: handle exception
            }finally{
                sqlsession.close();//读完要关闭sqlsession
            }

    运行方法后便可以删除指定id的一条数据。

    以上就是Mybatis简单的增删改操作代码。谢谢!

  • 相关阅读:
    python生成器和使用gevent操作协程
    python飞机大战
    python控制鼠标键盘+监听键盘
    python生成彩色二维码
    springboot+springcloud+maven相关父子项目创建
    c++求最大公约数
    java8 LocalDateTime
    nginx 代理wss
    vue 全局使用axios
    Vue3.0核心源码解读| 组件渲染:vnode 到真实 DOM 是如何转变的?
  • 原文地址:https://www.cnblogs.com/mylydg/p/6423863.html
Copyright © 2020-2023  润新知