public interface UserRepository extends ElasticsearchRepository{
//按userName like查询
List findByUserNameLike(String userName);
//按role的name属性查询
List findByRolesName(String name);
//按role的name属性查询 两种方式都可以
List findByRoles_Name(String name);
}
4.4:编写service
@Service
public class UserStandardService implements StandardService{
@Autowired
private UserRepository userRepository;
@Autowired
private ElasticsearchTemplate elasticsearchTemplate;
/**
* 批量新增
**/
@Override
public void batchAddUser(List users) {
if(CollectionUtils.isEmpty(users)) {
return ;
}
List queries = Lists.newArrayListWithExpectedSize(users.size());
IndexQuery indexItem = null;
for(User user :users) {
indexItem = new IndexQuery();
indexItem.setObject(user);
queries.add(indexItem);
}
elasticsearchTemplate.bulkIndex(queries);
}
@Override
public void addUser(User user) {
userRepository.save(user);
}
@Override
public void deletedUserById(String id) {
userRepository.deleteById(id);
}
/**
* 根据userId更新信息
*/
@Override
public void updateUser(User user) {
UpdateQuery updateQuery = new UpdateQuery();
updateQuery.setId(user.getId());
updateQuery.setClazz(User.class);
user.setId(null);
UpdateRequest request = new UpdateRequest();
request.doc(JsonUtils.beanToJson(user));
updateQuery.setUpdateRequest(request);
elasticsearchTemplate.update(updateQuery);
}
@Override
public List queryByUserName(String userName) {
return userRepository.findByUserNameLike(userName);
}
@Override
public List queryByRoleName(Role role) {
return userRepository.findByRoles_Name(role.getName());
}
}
4.5:启动
主要要加上 @EnableElasticsearchRepositories 注解;
@EnableElasticsearchRepositories(basePackages = "com.test.els.demo.core.user.repository")
@SpringBootApplication
public class DemoApplication {
private static final Logger logger = LoggerFactory.getLogger(DemoApplication.class);
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
logger.info("start completed !");
}
}
Description:插入大量测试数据
use xmpl;
drop procedure if exists mockup_test_data_sp;
create procedure mockup_test_data_sp(
in number_of_records int
)
begin
declare cnt int;
declare name varch
MYSQL的随机抽取实现方法。举个例子,要从tablename表中随机提取一条记录,大家一般的写法就是:SELECT * FROM tablename ORDER BY RAND() LIMIT 1。但是,后来我查了一下MYSQL的官方手册,里面针对RAND()的提示大概意思就是,在ORDER BY从句里面不能使用RAND()函数,因为这样会导致数据列被多次扫描。但是在MYSQL 3.23版本中,