package corgi.spring.test_java_service; import com.alibaba.fastjson.JSON; import com.dounine.corgi.jpa.dto.Condition; import com.dounine.corgi.jpa.enums.DataType; import com.dounine.corgi.jpa.enums.RestrictionType; import com.dounine.corgi.jpa.exception.SerException; import corgi.spring.test_java_service.code.ApplicationConfiguration; import corgi.spring.test_java_service.code.dto.UserDto; import corgi.spring.test_java_service.code.entity.User; import corgi.spring.test_java_service.code.entity.UserDetails; import corgi.spring.test_java_service.code.entity.UserInterest; import corgi.spring.test_java_service.code.service.IUserSer; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; import java.util.*; /** * Created by huanghuanlai on 2016/10/13. */ @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = ApplicationConfiguration.class) public class JunitTest { @Autowired private IUserSer userSer; @Before public void init()throws SerException { if(null==userSer.findByUsername("liguiqin")){ User user = new User(); user.setUsername("liguiqin"); user.setPassword("123456"); user.setMoney(5000.0); user.setAge(55); user.setHeight(1.2f); user.setNickname("xiaoming"); UserDetails details = new UserDetails(); details.setAddress("天河"); details.setTelephone("110"); user.setDetails(details); userSer.save(user); } } /** * 插入对象 */ @Test public void addUser() throws SerException { User user = new User(); user.setUsername("qin_add"); user.setPassword("123456"); user.setMoney(5000.0); userSer.save(user); System.out.println(JSON.toJSONString(user)); } /** * 保存对象,(保存 many-to-one,one-to-many ) */ @Test public void add() throws SerException { User user = new User(); user.setUsername("qin_details"); user.setAge(77); user.setPassword("7777755"); UserDetails details = new UserDetails(); details.setEmail("liguiqin@qq.com"); details.setAddress("广州"); user.setDetails(details); Set<UserInterest> interests = new HashSet<>(1); UserInterest interest = new UserInterest(); interest.setSeq(1); interest.setName("computer"); interest.setUser(user); interest.setCreateTime(LocalDateTime.now()); interests.add(interest); user.setInterests(interests); userSer.save(user); System.out.println(JSON.toJSONString(user)); } /** * 查询全部 */ @Test public void findAll() throws SerException { List<User> users = userSer.findAll(); for(User u : users){ System.out.println(u.getUsername()); } } /** * 分页查询,可带条件及排序 */ @Test public void findByPage() throws SerException { UserDto dto = new UserDto(); dto.setPage(3); dto.setSorts(Arrays.asList("username")); List<User> users = userSer.findByPage(dto); for(User u : users){ System.out.println(u.getUsername()); } } //条件查询 @Test public void findByCis() throws SerException { UserDto dto = new UserDto(); Condition condition = new Condition(); String[] between = new String[]{"1", "99"}; condition.setField("age"); condition.setValues(between); condition.setFieldType(DataType.INT); condition.setRestrict(RestrictionType.BETWEEN); dto.getConditions().add(condition); List<User> users = userSer.findByCis(dto, true); //按条件查询并分页 System.out.println(JSON.toJSONString(users)); } /** * 更新对象 */ @Test public void update() throws SerException { User user = userSer.findByUsername("liguiqin"); user.setPassword("666 this is a pass"); user.getDetails().setTelephone("1999999"); userSer.update(user); System.out.println(JSON.toJSONString(user)); } /** * 删除对象 */ @Test public void remove()throws SerException { User user = userSer.findByUsername("liguiqin"); userSer.remove(user.getId()); System.out.println("remove user success!"); } /** * 模糊查询 */ @Test public void findByLike() throws SerException{ UserDto dto = new UserDto(); Condition c = new Condition("username", DataType.STRING); c.setValues(new String[]{"gui"}); c.setRestrict(RestrictionType.LIKE); dto.getConditions().add(c); User user = userSer.findOne(dto); System.out.println(JSON.toJSONString(user)); } /** * 批量添加数据 */ @Test public void addAll()throws SerException { List<User> users = new ArrayList<>(5); for (int i = 0; i < 15; i++) { User user = new User(); user.setUsername("test" + i); user.setAge(20 + i); user.setPassword("password" + i); users.add(user); } userSer.save(users); System.out.println(JSON.toJSONString(users)); } /** * 批量修改数据 */ @Test public void updateAll() throws SerException{ UserDto dto = new UserDto(); List<User> users = null; Condition c = new Condition("username", DataType.STRING); c.setValues(new String[]{"testName"}); c.setRestrict(RestrictionType.LIKE); dto.getConditions().add(c); users = userSer.findByCis(dto, true); for (User user : users) { user.setUsername("update" + new Random().nextInt(9999)); } userSer.update(users); System.out.println(JSON.toJSONString(users)); } /** * 数据回滚 * @throws SerException */ @Transactional @Test public void rollBack()throws SerException { User user = userSer.findByUsername("liguiqin"); user.setAge(555); userSer.update(user); int i = 9/0; // fail } /** * 查询缓存(区别与实体缓存,该缓存可支持查询语句) * 配置:dao/userRep * @QueryHints(value={@QueryHint(name="org.hibernate.cacheable",value="true")}) * findByNickname() * 集合缓存 * 配置:test_java_service/entity/User * @Cache(usage = CacheConcurrencyStrategy.READ_WRITE,region ="entityCache" ) * private Set<UserInterest> interests; * */ @Test public void cache_findByNickname()throws SerException { String name = "xiaoming"; userSer.findByNickname(name); userSer.findByNickname(name); userSer.findByNickname(name); userSer.findByNickname(name); userSer.findByNickname(name); userSer.findByNickname(name); } /** * service/dao 缓存 * service (缓存生效查看service调用次数) * dao(缓存生效查看sql查询次数) * * service 配置: @Cacheable("serviceCache") * User findByUsername(String username) throws SerException; * * dao 配置: @Cacheable("daoCache") * User findByUsername(String username); * @throws Throwable */ @Test public void cache_findByUsername()throws SerException { String name ="liguiqin"; userSer.findByUsername(name); userSer.findByUsername(name); userSer.findByUsername(name); userSer.findByUsername(name); userSer.findByUsername(name); userSer.findByUsername(name); } }