Commit Graph

333 Commits

Author SHA1 Message Date
Jens Schauder
ade3324e2c DATAJDBC-326 - Support conversion of backreferences.
Ids used as backreferences now get properly converted.

Introduced Identifier to hold information about data that needs to be considered for inserts or updates but is not part of the entity.
Apart from column names and values they also hold information about the desired JdbcType in order to facilitate conversions.
This replaces the Map handed around in the past.

Original pull request: #118.
2019-03-05 15:18:37 +01:00
Jens Schauder
8eb80ba5cc DATAJDBC-335 - Address review comments.
Original pull request: #121.
2019-03-05 10:24:29 +01:00
Jens Schauder
94a8932b9e DATAJDBC-335 - Polishing.
Formatting and one additional test.

Original pull request: #121.
2019-03-05 10:24:22 +01:00
Mark Paluch
a11c121407 DATAJDBC-335 - Add DSL and renderer for Insert, Update, and Delete.
We now provide Statement builders for Insert, Update, and Delete statements.

Table myTable = SQL.table("mytable");

Insert insert = StatementBuilder.insert().into(myTable).values(SQL.bindMarker()).build();

Update update = StatementBuilder.update(table).set(myTable.column("foo").set(SQL.bindMarker())).build();

Delete delete = StatementBuilder.delete().from(table).where(myTable.column("foo").isEqualTo(SQL.literal("bar"))).build();

Original pull request: #121.
2019-03-05 10:23:45 +01:00
Greg Turnquist
2aa44a38fd DATAJDBC-316 - Polishing. 2019-02-28 11:47:30 -06:00
Greg Turnquist
2835e78ec2 DATAJDBC-316 - Introduce Concourse. 2019-02-28 11:26:59 -06:00
Mark Paluch
307fe5198e DATAJDBC-309 - Polishing.
Javadoc, static factory methods, typos. Refactor SQL rendering from a shared stack-based implementation to independent delegating visitors. Introduce DelegatingVisitor and TypedSubtreeVisitor base classes. Introduce SelectList container. Extract nested renderes to top-level types.

Move SQL renderer to renderer package.

Extend In to multi-expression argument. Introduce helper methods in Table to create multiple columns. Introduce factory method on StatementBuilder to create a new builder given a collection of expressions.

Add support for comparison conditions and LIKE and equal/not equal/less with equals to/greater with equals to conditions.

 Add condition creation methods to Column so Column objects can now create conditions for a fluent DSL as in (.where(left.isGreater(right)).

StatementBuilder.select(left).from(table).where(left.isGreater(right)).build().

Introduce RenderContext and RenderNamingStrategy.

Add since tags. Improve Javadoc.

Original pull request: #119.
2019-02-26 13:35:28 +01:00
Jens Schauder
1c9fad853f DATAJDBC-309 - Reworked visitor structure towards a more modular design.
Also added support for conditions.

Original pull request: #119.
2019-02-26 13:35:24 +01:00
Mark Paluch
10b38c5043 DATAJDBC-309 - Add Statement Builder API for SELECT.
We now provide a Statement Builder API along with a renderer to build statement object graphs and to render these to SQL.

SelectBuilder builder = StatementBuilder.select();

Table employee = SQL.table("employee");
Table department = SQL.table("department");

Column name = employee.column("name").as("emp_name");
Column department_name = employee.column("name").as("department_name");

Select select = builder.select(name, department_name).from(employee).join(department)
		.on(SQL.column("department_id", employee)).equals(SQL.column("id", department))
		.and(SQL.column("tenant", employee)).equals(SQL.column("tenant", department))
		.orderBy(OrderByField.from(name).asc()).build();

String sql = SqlRenderer.render(select);

Original pull request: #119.
2019-02-26 13:32:45 +01:00
Jens Schauder
2b9ae3ef73 DATAJDBC-334 - Polishing.
Original pull request: #120.
2019-02-19 09:29:07 +01:00
Bastian Wilhelm
0f7ca81017 DATAJDBC-334 - Fixes broken parameter names for quoted column names.
When a column has a quoted name it contains characters illegal for parameter names.
Therefore the parameter names now get sanitised.

Original pull request: #120.
2019-02-19 09:29:08 +01:00
Mark Paluch
61a54cac84 DATAJDBC-331 - Polishing.
Simplify column name discovery using Optionals utility methods. Add test to verify Column annotation precedence.

Javadoc, formatting.

Original pull request: #117.
2019-02-13 17:19:25 +01:00
Bastian Wilhelm
6fcff3ea80 DATAJDBC-331 Introduce @MappedCollection annotation.
We now provide a @MappedCollection annotation as replacement for @Column's keyColumn attribute.

class Person {
  @MappedCollection(idColumn = "the_id", keyColumn = "the_key")
  private List<Integer> mappedList;
}

Original pull request: #117.
2019-02-13 17:17:40 +01:00
Mark Paluch
1c0bd4fdb8 DATAJDBC-317 - Updated changelog. 2019-02-13 11:47:52 +01:00
Jens Schauder
9259cb4edf DATAJDBC-325 - SqlGeneratorSource is now thread safe.
Original pull request: #114.
2019-02-06 15:24:31 +01:00
Jens Schauder
326335c9be DATAJDBC-329 - Polishing.
Applied review feedback.

Original pull request: #116.
2019-02-06 15:15:54 +01:00
Jens Schauder
6bdf430036 DATAJDBC-329 - Replacing JdbcConfiguration.
Reverting breaking changes to JdbcConfiguration.
Deprecating JdbcConfiguration in favor of AbstractJdbcConfiguration.
Cleaning up the API to separate it from spring-data-relational and therefore R2DBC.

Original pull request: #116.
2019-02-06 15:15:36 +01:00
Mark Paluch
3b6f01f83e DATAJDBC-259 - Polishing.
Unwrap multi-dimensional array types to determine the proper component type. Extend tests. Inline isCollectionOf[Entities|SimpleType]Like calls and remove utility methods on RelationalPersistentProperty as the usage-scope is specific to array handling.

Original pull request: #113.
2019-02-06 14:30:16 +01:00
Jens Schauder
83ca6b4739 DATAJDBC-259 - Reading and writing to SQL array types.
Currently works for HsqlDb and Postgres, since the others do not support an array column type.

Original pull request: #113.
2019-02-06 14:30:10 +01:00
Mark Paluch
75ea44536f DATAJDBC-330 - Polishing.
Replace lambdas with method references. Remove extraneous overrides. Inline methods. Formatting.

Original pull request: #115.
2019-02-06 11:47:56 +01:00
Jens Schauder
341700e02d DATAJDBC-330 - Move default bean lookup from JdbcRepositoryConfigExtension to JdbcRepositoryFactoryBean.
So far the lookup of `NamedParameterJdbcOperations` and `DataAccessStrategy` could happend before these beans were registered resulting in failure to consider those beans.

The logic is now split in two parts:
If a bean name is given, this is configured on the BeanDefinition level in the JdbcRepositoryConfigExtension.
If no name is give a bean is looked up by type in the JdbcRepositoryFactoryBean.

This makes the code even simpler and uses standard Spring features instead of reimplementing them.

Original pull request: #115.
2019-02-06 11:47:39 +01:00
Jens Schauder
80e88e081b DATAJDBC-324 - Polishing.
Fixed line breaks.
Fixed Typos.
2019-02-04 14:48:21 +01:00
Oleksandr Kucher
709d6ef4d5 DATAJDBC-324 - Add support of read-only columns.
Columns annotated with `ReadOnlyProperty` will be ignored when generating INSERT or UPDATE statements.

Original pull request: #112.
2019-02-04 14:46:49 +01:00
Jens Schauder
8a2382f727 DATAJDBC-282 - Add JdbcAggregateOperations as a bean to the JdbcConfiguration. 2019-01-24 15:29:26 +01:00
Jens Schauder
13cc4f6dd6 DATAJDBC-111 - Polishing.
Formatting.
Removed some redundant tests.
Some code simplifications.

Original pull request: #110.
2019-01-24 15:24:51 +01:00
Schlagi123
7a26385b5a DATAJDBC-111 - Add support for embeddables.
By annotating a reference with `Embedded` that reference will get stored in the same table as the owning entity.

Original pull request: #110.
2019-01-24 15:24:51 +01:00
Kazuki Shimizu
9b856876fe DATAJDBC-322 - Upgrade MyBatis dependencies
MyBatis 3.5.0
mybatis-spring 2.0.0

Original pull request: #111.
2019-01-24 15:24:51 +01:00
Jens Schauder
7204eaf0b3 DATAJDBC-320 - Removed container-license-acceptance.txt.
This file accepted the license condition of Microsoft for there Docker image when running tests.
Very likely without the person using this knowing that she is accepting a license.
The file now has to be explicitly provided.

The Travis CI build adds the container-license-acceptance.txt for the build only.
2019-01-24 15:24:51 +01:00
Jens Schauder
bddb613c57 DATAJDBC-296 - Polishing.
Moved test into existing class.

Original pull request: #109.
2019-01-17 08:52:41 +01:00
Bastian Wilhelm
807688e63c DATAJDBC-296 - The value of the @Table annotation is now optional.
The default ("") is equivalent to no annotation at all, i.e. the `NamingStrategy` determines the table name.

Original pull request: #109.
2019-01-17 08:46:52 +01:00
Jens Schauder
0d23603efc DATAJDBC-285 - Polishing.
Original pull request: #108.
2019-01-16 16:33:23 +01:00
Bastian Wilhelm
4bff3f22b0 DATAJDBC-285 - Document usage of @Table and @Column.
Original pull request: #108.
2019-01-16 16:33:23 +01:00
Jens Schauder
6f599b7d51 DATAJDBC-282 - Polishing.
Renamed test to match the class under test.
2019-01-15 09:28:16 +01:00
Jens Schauder
d5558d9def DATAJDBC-282 - Removed JdbcRepository.
The decision was made not to offer `insert` and `update` as part of the repository interface.

It stays available as part of the `JdbcAggregateTemplate` which may be used directly or inside of a custom method implementation.
2019-01-15 09:27:46 +01:00
Jens Schauder
ff8a71fe62 DATAJDBC-282 - Polishing.
Formatting.
Removed AbstractRelationalEntityWriter.
Fixed integration test for MS-SQL.
Extracted some common test infrastructure.

Original pull request: #107.
2019-01-11 12:03:30 +01:00
Thomas Lang
d049988028 DATAJDBC-282 - Add insert and update methods to JdbcRepository.
This introduces the JdbcRepository interface which offers two additional methods beyond the CrudRepository:
`insert` and `update`.
Both methods skip the test if the aggregate is new and perform the respective operation.

Especially `insert` is useful for saving new aggregates which are new but have an ID set by the client and not generated by the database.

Original pull request: #107.
2019-01-11 12:03:30 +01:00
Mark Paluch
e5be123d9d DATAJDBC-297 - Updated changelog. 2019-01-10 14:15:38 +01:00
Jens Schauder
44e164fda4 DATAJDBC-287 - Polishing.
Moved the converter into it's own enum demonstrating good practices.
Added `@ReadingConverter`.

Original pull request: #106.
2019-01-09 08:45:32 +01:00
Evgeni Dimitrov
29688c9729 DATAJDBC-287 - Document registration of custom converters.
Original pull request: #106.
2019-01-09 08:45:32 +01:00
Mark Paluch
4d0ada1e3f DATAJDBC-313 - Update copyright years to 2019. 2019-01-02 13:55:30 +01:00
Jens Schauder
dc9b594dd0 DATAJDBC-303 - Made test stable against rounding errors. 2018-12-17 14:08:18 +01:00
Jens Schauder
b7da4f412f DATAJDBC-293 - Polishing.
Removed most usage of the Stream API.
Improved error messages.
Added tests.
Code formatting.

Original pull request: #102.
2018-12-17 10:09:57 +01:00
Jens Schauder
3061b41012 DATAJDBC-293 @EnableJdbcRepositories supports multiple JdbcTemplates.
Original pull request: #102.
2018-12-17 06:24:43 +01:00
Jens Schauder
df8bedd033 DATAJDBC-290 - Applied review feedback.
Added "since" information fro new and deprecated classes.

Original pull request: #104.
2018-12-14 12:49:00 +01:00
Jens Schauder
3b394e22d4 DATAJDBC-290 - Applied review feedback.
If both RowMapper and ResultSetExtractor are configured on a method and the ResultSetExtractor has a public constructor accepting a RowMapper, the two get combined.

Original pull request: #104.
2018-12-14 12:48:40 +01:00
Jens Schauder
b32135fdd7 DATAJDBC-290 - Reestablish compatibility.
Recreated RowMapperMap, its implementation and related methods in order to not to break existing implementations.
Everything deprecated so we can remove it from 1.2 on.

Original pull request: #101.
See also: https://jira.spring.io/browse/DATAJDBC-302
2018-12-14 12:48:06 +01:00
Jens Schauder
3769db7a27 DATAJDBC-290 - Polishing.
Naming, formatting, and code structure improved.

Original pull request: #101.
2018-12-14 12:47:56 +01:00
Evgeni Dimitrov
4e7a109393 DATAJDBC-290 - Allow specification of resultsetExtractorClass.
A @Query annotation may now specify a class implementing ResultSetExtractor to be useed for extracting objects from ResultSets.

Original pull request: #101.
2018-12-14 12:47:38 +01:00
Mark Paluch
f032e6cf46 DATAJDBC-307 - Add distribution module for Spring Data JDBC.
Add distribution module to create and distribute documentation artifacts.

Original pull request: #105.
2018-12-11 15:57:37 +01:00
Christoph Strobl
5c2a2f16d1 DATAJDBC-305 - After release cleanups. 2018-12-11 11:07:53 +01:00