Update README with changes from recent issues.
Covers changes from
Original pull request:
@@ -152,6 +152,19 @@ When determining the `RowMapper` to use for a method the following steps are fol
If applicable, wrapper types like collections or `Optional` are unwrapped.
Thus, a return type of `Optional<Person>` will use the type `Person` in the steps above.
+==== Modifying query
+
+You can mark as a modifying query using the `@Modifying` on query method.
+
+[source,java]
+----
+@Modifying
+@Query("UPDATE DUMMYENTITY SET name = :name WHERE id = :id")
+boolean updateName(@Param("id") Long id, @Param("name") String name);
+----
+
+The return types that can be specified are `void`, `int`(updated record count) and `boolean`(whether record was updated).
+
=== Id generation
Spring Data JDBC uses the id to identify entities, but also to determine if an entity is new or already existing in the database.
@@ -171,6 +184,15 @@ If you are not using autoincrement-columns, you can use a `BeforeSave`-listener
If you use the standard implementations of `CrudRepository` as provided by Spring Data JDBC, it will expect a certain table structure.
You can tweak that by providing a https://github.com/spring-projects/spring-data-jdbc/blob/master/src/main/java/org/springframework/data/jdbc/mapping/model/NamingStrategy.java[`NamingStrategy`] in your application context.
+.Optional classes of NamingStrategy
+|===
+| Class | Description
+
+| https://github.com/spring-projects/spring-data-jdbc/blob/master/src/main/java/org/springframework/data/jdbc/mapping/model/DelimiterNamingStrategy.java[`DelimiterNamingStrategy`]
+| The delimiter character implementation of NamingStrategy. The default delimiter is `_`(underscore), resulting in snake case. This class does not used by default.
+|===
+
+
=== Events
Spring Data JDBC triggers events which will get published to any matching `ApplicationListener` in the application context.
@@ -221,7 +243,7 @@ For each operation in `CrudRepository` Spring Data JDBC will execute multiple st
If there is a https://github.com/mybatis/mybatis-3/blob/master/src/main/java/org/apache/ibatis/session/SqlSessionFactory.java[`SqlSessionFactory`] in the application context, it will be checked if it offers a statement for each step.
If one is found, that statement will be used (including its configured mapping to an entity).
-The name of the statement is constructed by concatenating the fully qualified name of the entity type with `Mapper.` and a string determining the kind of statement.
+By default, the name of the statement is constructed by concatenating the fully qualified name of the entity type with `Mapper.` and a string determining the kind of statement.
E.g. if an instance of `org.example.User` is to be inserted, Spring Data JDBC will look for a statement named `org.example.UserMapper.insert`.
Upon execution of the statement an instance of [`MyBatisContext`] will get passed as an argument which makes various arguments available to the statement.
@@ -293,6 +315,10 @@ Note that the type used for prefixing the statement name is the name of the aggr
`getDomainType` the type of aggregate roots to count.
|===
+==== NamespaceStrategy
+
+You can customize the namespace part of a statement name using https://github.com/spring-projects/spring-data-jdbc/blob/master/src/main/java/org/springframework/data/jdbc/mybatis/NamespaceStrategy.java[`NamespaceStrategy`].
+
== Features planned for the not too distant future
=== Advanced query annotation support
