MyBatipse : Eclipse plugin for MyBatis
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.
Features
XML Editor Enhancements
Auto-completion
-
Mapper namespace : Calculated from the path.
![autocomplete namespace](https://github.com/mybatis/mybatipse/raw/master/screen/ac-ns1.png)
![autocomplete namespace](https://github.com/mybatis/mybatipse/raw/master/screen/ac-ns2.png)
-
Java class/Type alias : Propose Java classes and Type Aliases (translucent icons). Camelcase match is supported. [1] [2]
![autocomplete class](https://github.com/mybatis/mybatipse/raw/master/screen/ac-class-cc.png)
-
Java property : Propose properties of the parent java class. Nested properties are supported.
![autocomplete property](https://github.com/mybatis/mybatipse/raw/master/screen/ac-prop2.png)
-
Statement ID : If corresponding mapper interface exists, propose the method name as a statement ID.
![autocomplete statement id](https://github.com/mybatis/mybatipse/raw/master/screen/ac-stmt.png)
-
Reference to resultMap/select/sql : Propose ID of the referenced resultMap/select/sql. External reference is supported (blue icons).
![autocomplete reference](https://github.com/mybatis/mybatipse/raw/master/screen/ac-ref.png)
-
Parameter properties : #{} and ${} in select/insert/udpate/delte statements. Also works in some attributes.
![autocomplete properties 2](https://github.com/mybatis/mybatipse/raw/master/screen/ac-prop-test.png)
-
javaType, jdbcType, typeHandler in #{}
![autocomplete jdbcType](https://github.com/mybatis/mybatipse/raw/master/screen/ac-jdbc-type.png)
-
Result elements in resultMap/collection/association : Generates elements for the parent java class properties.
![autocomplete results](https://github.com/mybatis/mybatipse/raw/master/screen/ac-results.png)
-
setting name and value in XML config.
![autocomplete setting](https://github.com/mybatis/mybatipse/raw/master/screen/ac-setting-value.png)
-
[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.
Hyperlinks
- To referenced resultMap/select/sql element. External reference is supported.
![link to external reference](https://github.com/mybatis/mybatipse/raw/master/screen/hl-refid.png)
- From Java mapper interface to XML mapper element.
- From Java mapper method to XML mapper element.
- From XML statement id to Java mapper method.
![link to java method](https://github.com/mybatis/mybatipse/raw/master/screen/hl-java-method.png)
- Result map id or select statement id specified in Java annotation.
Validation
- Missing TypeAlias, Java class/property.
- Missing resultMap/select/sql ID.
- etc.
![problem view](https://github.com/mybatis/mybatipse/raw/master/screen/prblm-view.png)
Mapper Declaration View
Java Editor Enhancements
Auto-completion
- Parameter properties : #{} and ${} in select/insert/udpate/delte annotations.
- Return type properties in
@Result
- keyProperty in
@Options
and @SelectKey
![autocomplete return type properties in java](https://github.com/mybatis/mybatipse/raw/master/screen/ac-options-keyprop-java.png)
- 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
Quick Assist
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.
![param-annotation1](https://github.com/mybatis/mybatipse/raw/master/screen/qa-add-param1.png)
- You can copy annotation statement into the clipboard.
- You can move annotation statement to XML mapper.
- You can move
@Results
annotation to <resultMap />
in XML mapper.
Validation
@ResultMap
: invalid resultMap ID.
select
attribute of @One
or @Many
: invalid statement ID.
Rename Refactoring
- Renaming resultMap/statement/sql ID updates its references in Java and XML mappers.
- In XML mapper, right click -> Refactor -> Rename MyBatis element.
![param-annotation1](https://github.com/mybatis/mybatipse/raw/master/screen/refactor-rename-xml.png)
- In Java mapper, right click -> MyBatis Refactor -> Rename MyBatis element.
![param-annotation1](https://github.com/mybatis/mybatipse/raw/master/screen/refactor-rename-java.png)
- Renaming a Java mapper method also updates its references.
Miscellaneous
- Wizard to create a new XML mapper file.
-
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 ...
![smart-copy-console](https://github.com/mybatis/mybatipse/raw/master/screen/smart-copy-console.png)
... and the following statement is copied to the clipboard (be sure to include the first ==>
and <==
in the selection as the image above).
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](https://github.com/mybatis/mybatipse/raw/master/screen/nature.png)
Annotation Processing
- To validate annotation value, you need to enable annotation processing. Open Project -> Properties and select Java Compiler -> Annotation Processing in the left column. Check both Enable annotation processing and Enable processing in editor.
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](https://github.com/mybatis/mybatipse/raw/master/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. You can use wildcard to specify multiple packages (e.g. com.example.*.domain
).
- 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.
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.
Installation
There are several ways to install MyBatipse.
- Drag this button
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.
https://harawata.github.io/eclipse-site/
- For offline installation, see here.
Bugs, questions, suggestions, etc.
Please use the issue tracker.
License
MyBatipse is licensed under Eclipse Public License 1.0.