mongodb学习一(使用mongoResposity)

作者: 数据库信息  发布:2019-10-09

我们只需要书写接口,不用自己去写接口的实现。例如findByTelephone方法,telephone是User类的一个属性

" = :username")})

我们要做的是书写对应的接口即可。UserResposity接口代码如下:要在接口继承MongoRepository类

2.什么是Repository?

 @Data
    @Document(collection = "User")
    public class User implements Serializable {

        @Id
        private String id;

        /**
         * 电话
         */
        @Indexed(unique = true)
        private String telephone;


        /**
         * 昵称
         */
        @Indexed
        private String nickname;

        /**
         * 头像地址
         */
        private String avatar;


        /**
         * 出生日期
         */
        private Long birthday;

    }

@Query("update User u set u.firstname = ?1 where u.lastname =

@Autowired  
private UserRepository userRepository;

@Modifying

 

JpaRepository {

下面贴上User实体类,@Data这个是Lombok提供的注解,就可以免除生成get,set方法等操作

JpaSpecificationExecutor: 比较特殊,不属于Repository体系,实现一组JPACriteria查询相关的方法

User findByTelephoneLike(String telephone);

Serializable>

我们在使用接口时,只需要定义一个dao层的接口,例如:

}

最近公司做一个项目用到了mongodb,下面来介绍一下MongoRepository接口。

query = "select u from User u whereu.emailAddress = ?1")

大家可以类比Hibernate的jpa,MongoRepository是一个springdata提供的一个有增删改查以及分页等操作的基本接口。

可以定义好参数名,赋值时采用@Param("参数名"),而不用管顺序。如下所示:

还有GreaterThan(大于) ,LessThan(小于) ,Between(在...之间), IsNotNull, NotNull(是否非空),Near(查询地理位置相近的)等。具体查看官网文档

参见org.springframework.data.jpa.repository.support.SimpleJpaRepository

查询条件就是Like,用过SQL的大家都知道,就是模糊查询的意思。

ID>

如果需要查询的方法有多个字段可以用And来连接即可。

int setFixedFirstnameFor(String firstname, String

例如模糊查询电话号码,如下:

条件的属性名称与个数要与参数的位置与个数一一对应

1 @Repository
2 public interface UserRepository extends MongoRepository<User, String> {
3 
4     User findByTelephone(String telephone);
5 }

@NamedQueries(value = {

接口方法的基本命名方式为  find By 实体类属性名(首字母大写) 查询条件(首字母大写)

它使用一个叫作Repository的接口类为基础,

如果要使用这个接口,需要把接口注入。代码如下:

" =:username"),

interface UserResposity extends MongoRepository<User, String>{},   User是一个entity实体类。

  1. Transactionality(事务)

@Service(“userManagement”)

3.5 索引参数与命名参数

@org.springframework.stereotype.Repository

T saveAndFlush(T entity);//强制执行持久化

long count();//查询实体数量

而对于某种具体的数据访问操作,则在其子接口中定义。

在Service层调用XxxxRepository接口与XxxxDao接口完成相应的业务逻辑

?2")

2.2 JpaRepository 所提供的基本功能

将查询直接在相应的接口方法中声明,结构更为清晰,这是Spring data的特有实现。

RoleRepositoryroleRepository) {

2.2.1 CrudRepository

(2)命名参数(推荐使用这种方式)

ListfindByLastname(String lastname);

UserfindByLastnameOrFirstname(@Param("lastname") String lastname,

private String firstname;

其几个子接口则扩展了一些功能。它们的继承关系如下:

我们自己定义的XxxxRepository需要继承JpaRepository,

对于自定义的方法,如需改变spring

接口并继承com.aceona.appleframework.persistent.data.GenericDao

@Param("firstname") Stringfirstname);

Spring

}

@Autowired

其他条件关键字如下表的定义:

这两个annotation一起声明,可定义个性化更新操作,例如只涉及某些字段更新时最为常用,示例如下:

public UserManagementImpl(UserRepositoryuserRepository,

……

Table 3.1. Supported keywords inside method names

例如:定义一个Entity实体类

public interface UserRepository extends

IterablefindAll();//查询所有实体,不用或慎用!

澳门金莎娱乐网站 ,void delete(ID id);//根据Id删除实体

在领域与数据映射层之间进行协调。这个叫法就类似于我们通常所说的DAO,

AppleFramework在数据访问控制层采用了Spring Data作为这一层的解决方案,

void delete(Iterable entities);//删除一个实体的集合

定义XxxxDao

Role role =roleRepository.findByName(roleName);

它被定义为访问底层数据模型的超级接口。

这个接口提供了最基本的对实体类的添删改查操作

T save(T entity);//保存单个实体

……

}

public class User {

lastname);

public interface UserRepository extends

致力于减少数据访问层(DAO)的开发量。

@NamedQuery(name ="getUsernamePasswordToken",

@Transactional(readOnly = true)

在这里,我们就按照这一习惯把数据访问层叫Repository

private String lastname;

这样我们的XxxxRepository接口就具备了通用的数据访问控制层的能力。

按照Spring data 定义的规则,查询方法以find|read|get开头

this.roleRepository =roleRepository;

调用时采用在接口中定义与命名查询对应的method,由Spring Data根据方法名自动完成命名查询的寻找。

Spring Data :提供了一整套数据访问层(DAO)的解决方案,

@NamedQuery(name ="User.findByEmailAddress",

query ="select new com.aceona.weibo.vo.TokenBO(u.username,u.password) fromUser u where u." User.PROP_LOGIN

Iterable findAll(Sort

public class SimpleJpaRepository

Iterablesave(Iterableentities);//保存集合

}

public interface Repository

涉及条件查询时,条件的属性用条件关键字连接,要注意的是:条件属性以首字母大写其余字母小写为规定。

entities);//删除一个实体集合

}

JpaRepository {

Serializable>:

query = "select u from User uwhere u." User.PROP_LOGIN

本文由金沙澳门官网发布于数据库信息,转载请注明出处:mongodb学习一(使用mongoResposity)

关键词: 金沙澳门官网

上一篇:Redis的特性以及优势
下一篇:没有了