Spring 中 MongDB java Bean 的映射配置(注解方式)

 

1) Spring 中MongDB的映射配置文件

 

主要的注解值如下:

@Id- applied at the field level to mark the field used for identiy purpose.

 

@Document - applied at the class level to indicate this class is a candidate for mapping to the database. You can specify the name of the collection where the database will be stored.

 

@DBRef - applied at the field to indicate it is to be stored using a com.mongodb.DBRef.

 

@Indexed - applied at the field level to describe how to index the field.

 

@CompoundIndex - applied at the type level to declare Compound Indexes

 

@GeoSpatialIndexed - applied at the field level to describe how to geoindex the field.

 

@Transient - by default all private fields are mapped to the document, this annotation excludes the field where it is applied from being stored in the database

 

@PersistenceConstructor - marks a given constructor - even a package protected one - to use when instantiating the object from the database. Constructor arguments are mapped by name to the key values in the retrieved DBObject.

 

@Value - this annotation is part of the Spring Framework . Within the mapping framework it can be applied to constructor arguments. This lets you use a Spring Expression Language statement to transform a key's value retrieved in the database before it is used to construct a domain object.

 

@Field - applied at the field level and described the name of the field as it will be represented in the MongoDB BSON document thus allowing the name to be different than the fieldname of the class.

 

School的注解配置如下,主要看accounts嵌套。

 

Accouont.java的注解,其中accountName属性的值存入MDB后会映射为acName

 

2) Spring  中 MDB 保存注解Bean

需要注意的是,Spring 中 MDB保存复杂实体bean即,有嵌套格式的,需要对父对象和子对象都分别保存,如下:

  School sch = new School();

  sch.setFirstName("甘肃");

//sch.setId(new ObjectId("001-001"));

  sch.setSsn(new Integer("8877912"));

  sch.setLastName("兰州四中");

 

  Account ac = new Account();

  ac.setTotal(new Float(5009.34));

  ac.setAccountName("兰州银行");

  ac.setId(new ObjectId());

 

  Account ac1 = new Account();

  ac1.setId(new ObjectId());

  ac1.setTotal(new Float(3499.77));

  ac1.setAccountName("北京银行");

 

  ArrayList<Account> list = new ArrayList<Account>(); 

log.info("将账户信息写入到schoole List<Account> 属性中");

  list.add(ac1); //将账户信息写入到schoole List<Account> 属性中

  list.add(ac);

 

  sch.setAccounts(list);

this.pr.insert(ac);  //注意需要分别保存对应的子对象

this.pr.insert(ac1);

log.info("将school信息写入到db中");

this.pr.insert(sch);

 

3) 查询保存的数据

publicvoid findSchool(){ //通过注解嵌套查询

List<School> list = pr.findSchool();

for(School sc:list){

System.out.println(sc.getFirstName()+"=>"+sc.getLastName());

List<Account> aclist = sc.getAccounts(); //可以直接获取到保存的账户信息

if(null !=aclist){

for(Account act:aclist){

if(act!=null){

  System.out.println(act.getAccountName()+":"+act.getTotal().toString());

}

 }

}

}

}

 

1. GridFs 操作文件

1) 保存文件

publicvoid saveFile(String filename,String type){

    Resource file = new FileSystemResource("src/files/"+filename);

try {

gfsTemplate.store(file.getInputStream(), filename,type);

catch(IOException e) {

e.printStackTrace();

}

}

2) 读取文件

@Override

publicvoid findFiles(String name){

List<GridFSDBFile> result = gfsTemplate.find(new Query(GridFsCriteria.whereFilename().is(name)));

for(GridFSDBFile f: result){

System.out.println("文件名:"+f.getFilename());

File file = new File("F:\\1.xml");

try{

f.writeTo(file);

}catch (IOException e) {

e.printStackTrace();

}

}

}

  将存入的文件读取到F盘。可以根据实际情况处理,

gfsTemplate.find(new Query(GridFsCriteria.whereFilename().is(name)));

 

注意文件的操作:

whereContentType()Creates a GridFsCriteria for restrictions on the file's content type.

whereFilename()Creates a GridFsCriteria for restrictions on the file's name.

whereMetaData()Creates a GridFsCriteria for restrictions on the file's metadata.

whereMetaData(String metadataKey)Creates a GridFsCriteria for restrictions on a single file's metadata item.

 

你可能感兴趣的:(mongdb,spring配置环境搭建)