Browse Source

DATAJDBC-206 - Update README with changes from recent issues.

Covers changes from DATAJDBC-182, DATAJDBC-184, DATAJDBC-178.

Original pull request: #61.
pull/62/merge
Kazuki Shimizu 8 years ago committed by Jens Schauder
parent
commit
01a4bbd745
  1. 28
      README.adoc

28
README.adoc

@ -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. 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. 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 === 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. 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. 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. 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 === Events
Spring Data JDBC triggers events which will get published to any matching `ApplicationListener` in the application context. 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 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). 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`. 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. 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. `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 == Features planned for the not too distant future
=== Advanced query annotation support === Advanced query annotation support

Loading…
Cancel
Save