标签`<insert>`、`<select>`、`<update>`和`<delete>`的属性在很大程度上是不言自明的。添加属性`keyProperty`、`keyColumn`和`useGeneratedKeys`(在配置`<settings>`中)以使用数据库生成的值填充插入的对象。如果您在全局范围内不需要该属性,则可以从配置中的设置中删除该属性`useGeneratedKeys`,并仅将其添加到希望利用自动生成某些值的 insert 语句中。我们这样做是因为我们希望获得生成的 ID,并在稍后的代码中使用它来演示如何通过 ID 检索记录。
标签`<insert>`、`<select>`、`<update>`和`<delete>`的属性在很大程度上是不言自明的。添加属性`keyProperty`、`keyColumn`和`useGeneratedKeys`(在配置`<settings>`中)以使用数据库生成的值填充插入的对象。如果您在全局范围内不需要该属性,则可以从配置中的设置中删除该属性`useGeneratedKeys`,并仅将其添加到希望利用自动生成某些值的插入语句中。我们这样做是因为我们希望获得生成的 ID,并在稍后的代码中使用它来演示如何通过 ID 检索记录。
使用`<select>`的 ID 属性和类似的标记来调用它们,以及映射器名称空间值。我们将很快向您展示这是如何完成的。构造`#{id}`是指作为参数传入的值,如果该值是基元类型。否则,传入的对象应该有这样一个字段。不需要在对象上具有 getter。如果存在 getter,它必须符合 JavaBean 方法格式。
使用`<select>`的 ID 属性和类似的标记来调用它们,以及映射器名称空间值。我们将很快向您展示这是如何完成的。构造`#{id}`是指作为参数传入的值,如果该值是基元类型。否则,传入的对象应该有这样一个字段。不需要在对象上具有获取器。如果存在获取器,它必须符合 JavaBean 方法格式。
`SqlSession`对象实现了`AutoCloseable`接口,因此我们可以使用 try with resources 块,而不用担心资源泄漏。`SqlSession`接口提供了很多执行方法,包括重载方法`insert()`、`select()`、`selectList()`、`selectMap()`、`selectOne()`、`update()`、`delete()`,这些方法是最常用、最简单的方法。我们还使用了`insert()`和`selectOne()`。后者确保只返回一个结果。否则,它将抛出一个异常。当用于通过值标识单个记录的列没有唯一约束时,它还会引发异常。这就是为什么我们将`PRIMARY KEY`限定添加到列 ID 中。或者,我们可以只添加一个唯一的约束(将其标记为`PRIMARY KEY`隐式地执行此操作)。
`SqlSession`对象实现了`AutoCloseable`接口,因此我们可以使用资源试用块,而不用担心资源泄漏。`SqlSession`接口提供了很多执行方法,包括重载方法`insert()`、`select()`、`selectList()`、`selectMap()`、`selectOne()`、`update()`、`delete()`,这些方法是最常用、最简单的方法。我们还使用了`insert()`和`selectOne()`。后者确保只返回一个结果。否则,它将抛出一个异常。当用于通过值标识单个记录的列没有唯一约束时,它还会引发异常。这就是为什么我们将`PRIMARY KEY`限定添加到列 ID 中。或者,我们可以只添加一个唯一的约束(将其标记为`PRIMARY KEY`隐式地执行此操作)。