Commit Graph

282 Commits

Author SHA1 Message Date
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
Christoph Strobl
d28285bee4 DATAJDBC-305 - Prepare next development iteration. 2018-12-11 11:07:52 +01:00