• mybatis入门--单表的增删改操作


             单表的增加操作

             前面我们看了如何搭建mybatis框架以及查询操作,这里我们说下如何使用mybatis进行增加用户的操作。首先是在user.xml文件中添加insert的方法。代码如下

           <!-- 添加用户 -->
    	<insertid="insertUser"parameterType="cn.itcast.mybatis.po.User">
    	  insert into user(username,birthday,sex,address) 
              <!--这里的#{}中的值,必须和user类中的属性名称一致,建议直接粘贴过来-->
    	  values(#{username},#{birthday},#{sex},#{address})
    	</insert>
    
     

             然后就是写个测试方法,代码如下:

    // 添加用户信息
    	@Test
    	publicvoid testInsert() {
    		// 数据库会话实例
    		SqlSession sqlSession = null;
    		try {
    			// 创建数据库会话实例sqlSession
    			sqlSession = sqlSessionFactory.openSession();
    			// 添加用户信息
    			User user = new User();
    			user.setUsername("张小明");
    			user.setAddress("河南郑州");
    			user.setSex("1");
    			
    			sqlSession.insert("test.insertUser", user);
    			//提交事务,这里需要手动提交。
    			sqlSession.commit();
    		} catch (Exception e) {
    			e.printStackTrace();
    		} finally {
    			if (sqlSession != null) {
    				sqlSession.close();
    			}
    		}
    	}
    

              注意:这里需要强调的是,由于使用的是jdbc的默认事物,mybatis会自动开启事物,但是不知道什么时候提交,所以需要手动进行事物的提交。
            有比较细心地同学可能注意到了,我们的insert语句中没有写id的值。这就要求我们的数据库是主键自增长的,但是依然有问题:我们添加进去的用户和我们的内存中的用户信息不一致——因为我们的内存中的user是没有主键的。怎么解决这个问题呢?我们需要在user.xml中尽心这些配置:

    	<insert id="insertUser" parameterType="cn.itcast.pojo.User">
    		<!-- 
    		select LAST_INSERT_ID() mybatis函数作用是查询最后增加的数据的主键id
    		
    		keyProperty:将这个数据库函数查询出的数据放到传入参数的User对象的id属性中保存
    		order: 当前mysql函数相对于insert语句的执行顺序, 在insert前执行是before, 在insert后执行是after
    		resultType: keyProperty中指定的返回的id属性的类型
    		 -->
    		<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
    			select LAST_INSERT_ID()
    		</selectKey>
    		insert into user (username, birthday, sex, address) values(#{username}, #{birthday}, #{sex}, #{address})
    	</insert>

             这里面的selectKey可以将数据库自动生成的主键进行返回,然后会将我们的主键自动赋值给我们的user对象,这样的话,数据库和系统内存中的数据就一致了。
              有的同学可能说,如果我不使用主键自增长,我使用uuid怎么办?这里向大家介绍下mybatis如何通过uuid生成主键。其实十分的简单,就是将我们的

    select LAST_INSERT_ID()

    换成

    select uuid()

    然后将after修改为before就可以了。代码如下:

    <insert id="insertUser" parameterType="cn.itcast.mybatis.po.User">
    <selectKey resultType="java.lang.String" order="BEFORE"
    keyProperty="id">
    select uuid()
    </selectKey>
    insert into user(id,username,birthday,sex,address) 
    		 values(#{id},#{username},#{birthday},#{sex},#{address})
    </insert>
    
    注意:这里使用的order是“BEFORE”

             单表的删除操作

              删除用户比较简单,这里就直接把我的代码贴上了

              1.user.xml文件

    <!-- 删除用户 -->
    <deleteid="deleteUserById"parameterType="int">
    	delete from user where id=#{id}
    </delete>
    

              2.测试代码

    	@Test
    	publicvoidtestDelete() {
    		// 数据库会话实例
    		SqlSession sqlSession = null;
    		try {
    			// 创建数据库会话实例sqlSession
    			sqlSession = sqlSessionFactory.openSession();
    			// 删除用户
    			sqlSession.delete("test.deleteUserById",18);
    			// 提交事务
    			sqlSession.commit();
    		} catch (Exception e) {
    			e.printStackTrace();
    		} finally {
    			if (sqlSession != null) {
    				sqlSession.close();
    			}
    		}
    	}
    

             单表的修改操作

              修改代码比较简单,直接粘贴源代码了:

             1.user.xml文件

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

              2.测试程序

    	@Test
    	publicvoidtestUpdate() {
    		// 数据库会话实例
    		SqlSession sqlSession = null;
    		try {
    			// 创建数据库会话实例sqlSession
    			sqlSession = sqlSessionFactory.openSession();
    			// 添加用户信息
    			User user = new User();
    			user.setId(16);
    			user.setUsername("张小明");
    			user.setAddress("河南郑州");
    			user.setSex("1");
    			user.setPrice(1999.9f);
    			sqlSession.update("test.updateUser", user);
    			// 提交事务
    			sqlSession.commit();
     
    		} catch (Exception e) {
    			e.printStackTrace();
    		} finally {
    			if (sqlSession != null) {
    				sqlSession.close();
    			}
    		}
    	}
    


  • 相关阅读:
    js-数组方法的使用和详谈
    JS中的作用域(一)-详谈
    vue中的axios
    GitHub使用
    nodejs项目文件搭建环境
    我的黑客和渗透测试学习路线
    带你了解后渗透工具Koadic
    黑客专用多功能记事本
    Kali环境使用Metasploit生成木马入侵安卓手机
    邪恶葫芦工具包
  • 原文地址:https://www.cnblogs.com/liyasong/p/mybatis_crud.html
Copyright © 2020-2023  润新知