Annotations
Hint
This article is generated by AI translation.
Use dbVisitor annotations on interface methods to define MongoDB commands; the methods act as data accessors without extra boilerplate.
Note
All core annotations work on MongoDB except @Call.
1. Define entity
@Table("user_info")
public class UserInfo {
@Column(value = "uid", primary = true)
private String uid;
@Column("name")
private String name;
... // 省略 getter/setter 方法
}
2. Define mapper interface
@SimpleMapper()
public interface UserInfoMapper {
// Generates: test.user_info.insert(...)
@Insert("test.user_info.insert(#{info, typeHandler=net.hasor.dbvisitor.types.handler.json.JsonTypeHandler})")
int saveUser(@Param("info") UserInfo info);
// Generates: test.user_info.find(...)
@Query("test.user_info.find({uid: #{uid}})")
UserInfo loadUser(@Param("uid") String uid);
// Generates: test.user_info.remove(...)
@Delete("test.user_info.remove({uid: #{uid}})")
int deleteUser(@Param("uid") String uid);
}
3. Create mapper
// 1) Create Configuration
Configuration config = new Configuration();
// 2) Create Session
Session session = config.newSession(dataSource);
或者
Session session = config.newSession(connection);
// 3) Create Mapper
UserInfoMapper mapper = session.createMapper(UserInfoMapper.class);
Map ObjectId
MongoDB _id is typically ObjectId, while Java commonly uses String.
1. Define entity
@Table("user_info")
public class UserInfo {
// Declare _id and set whereValueTemplate for Lambda/BaseMapper auto conditions
@Column(value = "_id", primary = true, keyType = KeyType.Auto, whereValueTemplate = "ObjectId(?)")
private String id;
@Column("name")
private String name;
...
}
2. Mapper interface
@SimpleMapper()
public interface UserInfoMapper {
// Use ObjectId(#{id}) in @Query
@Query("test.user_info.find({_id: ObjectId(#{id})})")
UserInfo loadById(@Param("id") String id);
}
Paging queries
Add a Page argument to mapper methods for pagination.
Mapper interface
@SimpleMapper()
public interface UserInfoMapper {
@Query("test.user_info.find({name: #{name}})")
List<UserInfo> queryByName(@Param("name") String name, Page page);
}
Use pagination
Page page = new PageObject();
page.setPageSize(10);
page.setPageNumber(0);
List<UserInfo> list = mapper.queryByName("mali", page);
// Next page
page.nextPage();
list = mapper.queryByName("mali", page);