mybaits操作数据库主键、修改、删除

5.1. mysql 自增主键返回
查询 id sql
SELECT LAST_INSERT_ID()
 
通过修改 User.xml 映射文件,可以将 mysql 自增主键返回:
如下添加 selectKey 标签
<!-- 保存用户 -->
< insert id = "saveUser" parameterType = "cn.itcast.mybatis.pojo.User" >
    <!-- selectKey 标签实现主键返回 -->
    <!-- keyColumn:主键对应的表中的哪一列 -->
    <!-- keyProperty:主键对应的pojo中的哪一个属性 -->
    <!-- order:设置在执行insert语句前执行查询id的sql,孩纸在执行insert语句之后执行查询id的sql -->
    <!-- resultType:设置返回的id的类型 -->
    < selectKey keyColumn = "id" keyProperty = "id" order = "AFTER"
       resultType = "int" >
       SELECT LAST_INSERT_ID()
    </ selectKey >
    INSERT INTO `user`
    (username,birthday,sex,address) VALUES
    (#{username},#{birthday},#{sex},#{address})
</ insert >
 
LAST_INSERT_ID(): mysql 的函数,返回auto_increment 自增列新记录id 值。
 
5.2. Mysql 使用 uuid 实现主键
需要增加通过select uuid() 得到uuid
<!-- 保存用户 -->
< insert id = "saveUser" parameterType = "cn.itcast.mybatis.pojo.User" >
    <!-- selectKey 标签实现主键返回 -->
    <!-- keyColumn:主键对应的表中的哪一列 -->
    <!-- keyProperty:主键对应的pojo中的哪一个属性 -->
    <!-- order:设置在执行insert语句前执行查询id的sql,孩纸在执行insert语句之后执行查询id的sql -->
    <!-- resultType:设置返回的id的类型 -->
    < selectKey keyColumn = "id" keyProperty = "id" order = " BEFORE "
       resultType = " string " >
       SELECT LAST_INSERT_ID()
    </ selectKey >
    INSERT INTO `user`
    (username,birthday,sex,address) VALUES
    (#{username},#{birthday},#{sex},#{address})
</ insert >
 
注意这里使用的order 是“ BEFORE
 
 
5.3. 修改用户
根据用户id 修改用户名
使用的sql
UPDATE `user` SET username = ' 赵云' WHERE id = 26
5.3.1. 映射文件
User.xml 配置文件中添加如下内容:
<!-- 更新用户 -->
< update id = "updateUserById" parameterType = "cn.itcast.mybatis.pojo.User" >
    UPDATE `user` SET
    username = #{username} WHERE id = #{id}
</ update >
 
5.3.2. 测试程序
MybatisTest 中添加测试方法如下:
@Test
public void testUpdateUserById() {
    // 4. 创建SqlSession对象
    SqlSession sqlSession = sqlSessionFactory .openSession();
    // 5. 执行SqlSession对象执行更新
    // 创建需要更新的User
    User user = new User();
    user .setId( 26 );
    user .setUsername( "关羽" );
    user .setSex( "1" );
    user .setBirthday( new Date());
    user .setAddress( "蜀国" );
    sqlSession . update ( "updateUserById" , user );
    // 需要进行事务提交
    sqlSession .commit();
    // 7. 释放资源
    sqlSession .close();
}
5.4. 删除用户
根据用户id 删除用户
使用的sql
DELETE FROM `user` WHERE id = 47
5.4.1. 映射文件:
User.xml 配置文件中添加如下内容:
    <!-- 删除用户 -->
    < delete id = "deleteUserById" parameterType = "int" >
       delete from user where
       id=#{id}
    </ delete >
5.4.2. 测试程序:
MybatisTest 中添加测试方法如下:
   @Test
    public void testDeleteUserById() {
       // 4. 创建SqlSession对象
       SqlSession sqlSession = sqlSessionFactory .openSession();
       // 5. 执行SqlSession对象执行删除
       sqlSession .delete( "deleteUserById" , 48);
       // 需要进行事务提交
       sqlSession .commit();
       // 7. 释放资源
       sqlSession .close();
    }
MyBatis框架是一个优秀的ORM(对象关系映射)框架,它提供了多种方法向数据库插入数据。以下是使用MyBatis数据库插入数据的步骤: 1.在MyBatis中通过配置文件或注解方式定义数据源和SQL语句。配置文件是在mybatis-config.xml中定义,它设置了MyBatis框架中的全局属性。其他的数据源和数据库配置也可与此文件中连同。 2.配置Mapper文件,如mapper1.xml:mapper1.xml <?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="com.xxx.mapper.UserMapper"> <insert id="insertUser" parameterType="com.xxx.entity.User"> insert into user(username,password,job,create_time,update_time) values(#{username},#{password},#{job},#{createTime},#{updateTime}) </insert> </mapper> 其中`namespace`是Mapper接口的全路径,`insert`是定义的插入语句,`parameterType`指定了实体类对应的参数类型。需要注意的是,在parameterType中指定的实体类属性名应该与数据库表中的字段名一致。 3.使用MyBatis框架提供的SqlSession类来获取一个与数据库连接的会话。 4.然后通过SqlSession中定义的插入方法insert执行插入操作。指定插入语句和插入参数,如下: ```java SqlSession sqlSession = MyBatisUtil.getSqlSession(); UserMapper userMapper = sqlSession.getMapper(UserMapper.class); User user = new User(); user.setUserName("test"); user.setPassword("123456"); user.setJob("developer"); user.setCreateTime(new Date()); user.setUpdateTime(new Date()); // 执行插入操作 userMapper.insertUser(user); // 一定要提交,不然数据不会写入数据库 sqlSession.commit(); ``` 通过以上几个步骤就可以使用MyBatis框架向数据库插入数据了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值