iBatis Java Mapper是iBatis+Spring的一个扩展,能够让你使用Java类和接口来代替用于object-SQL映射的XML文档。
官方网址:
http://javamapper.sourceforge.net/
目前还没有正式发布版本,但很值得期待。
下面是一个示例:
第一步把iBatis Java Mapper实现类,配置到Spring容器中。如下:
@ResultMap {
public class Account {
private String username;
private String email;
@Result(column="userid", groupBy=true)
public String getUsername();
@Result(column="email")
public String getEmail();
// Setters
}
更多示例:
Creating Mapped Statements
iBatis Java Mapper uses methods to map statements. Statement methods
can be in classes and interfaces with or without the @ResultMap
annotation, it doesn't matter. Methods are used for statement mapping
if they are annotated with @Select, @Insert, @Update or @Delete.
Here is an example of a mapped select statement:
@Select("select username as value from signon")
public abstract String getUsernameList();
In this case the SQL is provided as the value of the @Select
annotation. It is also possible to use a properties file to hold the
SQL if you don't want it in the Java source. The properties file's path
and name must match the class/interface full name, for example if the
class containing the mapper method is named foo.bar.MapperClass
, then its matching properties file must be /foo/bar/MapperClass.properties。The entry key is the method name and the entry value is the SQL:
getUsernameList = select username as value from signon
Now we can write the annotation without the SQL:
@Select
public abstract String getUsernameList();
Let's take a look at the method signiture and see what iBatis Java
Mapper can learn from it about the required mapping. The return type is
String
, so this is the class which is used as the statement result class. Now let's look at another example:
@Select(resultClassMapper=AccountMapper.class)
public abstract Account getAccountByUsernameAndPassword(Account account);
Here the annotation specifies the class that contains the result map
definition. In this case the return value is ignored, but we left it as
sort of self-documenting code. This method also has an argument of type
Account
, so Account is used as parameterClass. If a
method has more than one argument, iBatis Java Mapper uses the first
one as parameter class and ignores the rest.
Mapping of insert, update and delete statements is similar and even a little simpler. Here are some examples:
@Insert
public abstract void insertProfile(Account account);
@Update
public abstract void updateProfile(Account account);
@Delete
public abstract void deleteProfile(Account account);
Good Luck!
Yours Matthew!
posted on 2009-01-05 21:35
x.matthew 阅读(2794)
评论(0) 编辑 收藏 所属分类:
最新开源动态