MyBatis is a popular SQL Mapper framework.
And MyBatipse is an Eclipse plug-in which provids content assists and validations when editing MyBatis related files.
-
Java class/Type alias : Propose Java classes and Type Aliases (translucent icons). Camelcase match is supported. [1] [2]
-
Java property : Propose properties of the parent java class. Nested properties are supported.
-
Statement ID : If corresponding mapper interface exists, propose the method name as a statement ID.
-
Reference to resultMap/select/sql : Propose ID of the referenced resultMap/select/sql. External reference is supported (blue icons).
-
Parameter properties : #{} and ${} in select/insert/udpate/delte statements. Also works in some attributes.
-
Result elements in resultMap/collection/association : Generates elements for the parent java class properties.
-
[1] For better performance, classes in the application libraries (loaded as JARs) are listed only when at least one package segment is specified.
-
[2] There is a limitation for the type alias support. Basically, if type aliases are registered using Java API, they are not automatically detected. As a workaround, you can register type aliases in MyBatipse's preference. See the Configuration section.
- To referenced resultMap/select/sql element. External reference is supported.
- From Java mapper interface to XML mapper element.
- From Java mapper method to XML mapper element.
- From XML statement id to Java mapper method.
- This feature is ported from MyBatis Editor plugin by @peterhendriks .
- Parameter properties : #{} and ${} in select/insert/udpate/delte annotations.
- Return type properties in
@Result
- keyProperty in
@Options
and@SelectKey
- javaType, jdbcType, typeHandler in #{} : See the XML example.
- Reference to resultMap in
@ResultMap
and resultMap attribute of@Arg
- select attribute of
@Arg
,@Many
and@One
Put the cursor on the statement method name and press cmd + 1 (or ctrl + 1) to trigger Quick Assist.
- You can add
@Param
to method parameters.
- You can copy annotation statement into the clipboard.
- You can move annotation statement to XML mapper.
@ResultMap
: invalid resultMap ID.select
attribute of@One
or@Many
: invalid statement ID.
- Renaming resultMap/statement/sql ID updates its references in Java and XML mappers.
- In XML mapper, right click -> Refactor -> Rename MyBatis element.
- In Java mapper, right click -> MyBatis Refactor -> Rename MyBatis element.
- Renaming a Java mapper method also updates its references.
-
Smart-copy menu in Console View to copy SQL statement in an executable form. For example, if you select and copy the following debug output ...
... and the following statement is copied to the clipboard.
insert into users values(2, 'User2')
## Configuration
### XML mapper location
- MyBatipse searches XML mapper files under your project's __Source Folder__. To make a directory __Source Folder__, right click the directory in the package explorer and choose __Build Path__ -> __Use as Source Folder__ from the menu.
### MyBatis Nature
- By default, each file is validated when it's saved, but you would want to validate the XML mapper when the related Java classes are updated as well. For that purpose, MyBatipse provides a custom nature __MyBatis Nature__.
To add the nature, right click the project in the package explorer and choose __Configure__ -> __Add MyBatis Nature__ from the menu.
![nature](screen/nature.png)
### Type Alias
- Type alias are automatically detected _if_ they are registered using XML config file (both mybatis and mybatis-spring config is supported).
If you register type aliases in Java code, MyBatipse cannot detect them. As a workaround, you can register custom type aliases in the project setting (Open __Project__ -> __Properties__ menu and select __MyBatipse__ from the left column).
![type aliases](screen/pref-alias.png)
For example, with the above settings:
- The first entry registers all the classes in ```com.example.domain``` package as type aliases.
- The second entry registers the single class ```domain.Person```.
- The third entry registers the single class ```domain.SomeLongNamedBean``` under the alias ```SomeBean```.
- Note that, in any case, MyBatipse respects ```@Alias``` annotation if it exists.
### Java 8 `-parameters` compiler option support
- If 'Store information about method parameters' option is enabled in the Java Compiler -> Classfile Generation setting, MyBatipse proposes the declared method parameter names.
![xml proposal order](screen/actual-parameters.png)
## Tips
- To move MyBatis proposals to the top of the XML proposal list, quit Eclipse and open the following file in the workspace: ```.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.wst.xml.ui.prefs``` Find the line started with ```xml_content_assist_default_page_sort_order=``` and insert ```net.harawata.mybatis.proposalCategory.xml\u0000``` right after the equal sign.
![xml proposal order](screen/xml-proposal-order.png)
## Installation
There are several ways to install MyBatipse.
- Drag this button [![drag-to-install button](http://marketplace.eclipse.org/misc/installbutton.png)](http://marketplace.eclipse.org/marketplace-client-intro?mpc_install=1467819) from browser to your Eclipse workbench (i.e. window).
- Choose __Eclipse Marketplace...__ in __Help__ menu of your Eclipse and search __MyBatipse__.
- Choose __Install New Software...__ in __Help__ menu and enter the following URL.
http://dl.bintray.com/harawata/eclipse
## Bugs, questions, suggestions, etc.
Please use the [issue tracker](https://github.com/harawata/mybatipse/issues).
## License
MyBatipse is licensed under [__Eclipse Public License 1.0__](http://www.eclipse.org/legal/epl-v10.html).