使用SqlSession执行sql语句插入数据不成功

### 编写 MyBatis SQL 插入语句 在 MyBatis 中编写 SQL 插入语句涉及定义映射文件以及对应的 Java 接口。下面是一个完整的例子来展示如何实现这一点。 #### 定义实体类 假设有一个 `User` 类作为要插入数据库的对象: ```java public class User { private Integer id; private String name; private int age; // Getters and Setters... } ``` #### 创建 Mapper XML 文件 接下来,在资源目录下创建一个名为 `UserMapper.xml` 的文件用于描述 SQL 映射关系: ```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.example.mapper.UserMapper"> <!-- Insert Statement --> <insert id="insertUser" parameterType="com.example.model.User" useGeneratedKeys="true" keyProperty="id"> INSERT INTO users (name, age) VALUES (#{name}, #{age}) </insert> </mapper> ``` 这段代码指定了一个命名空间,对应于后续提到的接口名称;并通过 `<insert>` 标签定义了一个新的记录到表 `users` 中的操作[^1]。 #### 对应的 Mapper Interface 为了调用上述定义好的 SQL 语句,还需要提供一个与之匹配的接口声明: ```java package com.example.mapper; import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Options; import com.example.model.User; public interface UserMapper { @Insert("INSERT INTO users(name, age) VALUES(#{name}, #{age})") @Options(useGeneratedKeys=true, keyProperty="id") void insertUser(User user); } ``` 这里使用了注解方式简化配置,同时也实现了相同的功能——向 `users` 表中添加一条新纪录,并自动获取自增主键值赋给传入参数对象 `user.id` 属性[^2]。 当应用程序执行此操作时,MyBatis 将负责处理所有的细节工作,包括准备 PreparedStatement、设置参数、执行查询和关闭连接等任务。 #### 使用 SqlSession 执行插入操作 最后一步是在业务逻辑层通过获得的 `SqlSession` 来实际调用这个方法: ```java try(SqlSession session = sqlSessionFactory.openSession()) { User newUser = new User(); newUser.setName("John Doe"); newUser.setAge(30); UserMapper mapper = session.getMapper(UserMapper.class); mapper.insertUser(newUser); System.out.println("Inserted record with ID: " + newUser.getId()); session.commit(); // 提交事务以确保数据持久化 } catch(Exception e){ logger.error(e.getMessage(),e); } ``` 以上即为利用 MyBatis 进行简单插入操作的一个完整流程说明[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值