Mybatis保存如何用主键id
时间: 2024-09-07 15:06:52 浏览: 64
在MyBatis中,当你需要保存数据并使用主键ID时,通常涉及以下几个步骤:
1. **创建Mapper接口**:首先,在Mapper接口文件中声明一个插入(insert)方法,并指定实体类作为参数,例如:
```java
@Insert("INSERT INTO your_table (column1, column2) VALUES (${column1}, ${column2})")
int saveYourEntity(YourEntity entity);
```
这里`your_table`是你的数据库表名,`YourEntity`是你映射到数据库的实体类。
2. **配置Mapper XML**:在对应的Mapper XML文件中编写具体的SQL语句,其中`${}`会被替换为对应属性值。对于主键自动增长的情况,MyBatis通常不需要显式指定主键字段:
```xml
<insert id="saveYourEntity" parameterType="YourEntity">
INSERT INTO your_table (column1, column2)
VALUES (#{column1}, #{column2})
</insert>
```
3. **业务代码调用Mapper**:在服务层或DAO类中,通过SqlSession实例执行保存操作,传入待插入的对象:
```java
SqlSession sqlSession = sqlSessionFactory.openSession();
YourEntity entity = new YourEntity();
// 设置实体类的非主键属性
entity.setColumn1("value1");
entity.setColumn2("value2");
int insertedId = sqlSession.insert("saveYourEntity", entity);
// 如果是自增主键,insertedId就是新生成的ID
sqlSession.commit();
sqlSession.close();
```
如果你想要手动设置主键值,可以在实体类上添加`@GeneratedValue(strategy=GenerationType.AUTO)`注解,让数据库自动生成。
4. **获取自动生成的主键**:如果数据库设置了主键自动增长,如MySQL的`AUTO_INCREMENT`,那么insert操作完成后,主键的值通常会在数据库中更新,你可以在数据库查询中获取这个新的ID,或者通过JDBC的Statement直接获取。
阅读全文