init
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<!-- maven可以继承父项目中的参数,所以可以删除子模块中相同定义 -->
|
||||
<artifactId>zilean-test</artifactId>
|
||||
<packaging>jar</packaging>
|
||||
<name>zilean-test</name>
|
||||
<description>框架功能测试模块</description>
|
||||
|
||||
<parent>
|
||||
<groupId>cn.odboy</groupId>
|
||||
<artifactId>zilean</artifactId>
|
||||
<version>1.0.0</version>
|
||||
<!-- lookup parent from repository -->
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
<dependencies>
|
||||
<!-- maven可以继承父项目中的依赖,所以可以删除子模块中相同定义 -->
|
||||
<!--lombok 依赖-->
|
||||
<dependency>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
<artifactId>lombok</artifactId>
|
||||
<version>${lombok.version}</version>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
<!-- HuTool工具箱-->
|
||||
<dependency>
|
||||
<groupId>cn.hutool</groupId>
|
||||
<artifactId>hutool-all</artifactId>
|
||||
<version>${hutool.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>cn.odboy</groupId>
|
||||
<artifactId>zilean-base</artifactId>
|
||||
<version>1.0.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>cn.odboy</groupId>
|
||||
<artifactId>zilean-cache</artifactId>
|
||||
<version>1.0.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.mybatis.spring.boot</groupId>
|
||||
<artifactId>mybatis-spring-boot-starter-test</artifactId>
|
||||
<version>1.3.2</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
||||
@@ -0,0 +1,26 @@
|
||||
package cn.odboy.zilean.test;
|
||||
|
||||
import org.mybatis.spring.annotation.MapperScan;
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.boot.autoconfigure.domain.EntityScan;
|
||||
|
||||
/**
|
||||
* @author: Odboy
|
||||
* @version: Jdk 1.8
|
||||
* @desc: TODO 应用入口
|
||||
* @time: 2019/8/11 7:25
|
||||
* @blog: www.odboy.cn
|
||||
* <p>
|
||||
* SpringBootApplication-scanBasePackages-->定义扫描的根节点
|
||||
* MapperScan-->定义扫描mapper接口所在包
|
||||
* EntityScan-->定义JPA自动建表扫描所在包
|
||||
*/
|
||||
@SpringBootApplication(scanBasePackages = "cn.odboy.zilean")
|
||||
@MapperScan("cn.odboy.zilean.dao")
|
||||
@EntityScan("cn.odboy.zilean.entity")
|
||||
public class ZileanTestApplication {
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(ZileanTestApplication.class, args);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
## -------------------------Redis\u914D\u7F6E(\u9AD8\u901F\u7F13\u5B58)
|
||||
# \u670D\u52A1\u5668\u5730\u5740
|
||||
spring.redis.host=47.103.14.6
|
||||
# \u7AEF\u53E3\u53F7
|
||||
spring.redis.port=6379
|
||||
# \u8BBF\u95EE\u5BC6\u7801
|
||||
spring.redis.password=Odboy#Redis!@$wRsSa
|
||||
# \u8FDE\u63A5\u6C60\u6700\u5927\u8FDE\u63A5\u6570(\u4F7F\u7528\u8D1F\u503C\u8868\u793A\u6CA1\u6709\u9650\u5236)
|
||||
spring.redis.jedis.pool.max-active=50
|
||||
# \u8FDE\u63A5\u6C60\u6700\u5927\u963B\u585E\u7B49\u5F85\u65F6\u95F4(\u4F7F\u7528\u8D1F\u503C\u8868\u793A\u6CA1\u6709\u9650\u5236)
|
||||
spring.redis.jedis.pool.max-wait=-1ms
|
||||
# \u8FDE\u63A5\u6C60\u4E2D\u7684\u6700\u5927\u7A7A\u95F2\u8FDE\u63A5
|
||||
spring.redis.jedis.pool.max-idle=10
|
||||
# \u8FDE\u63A5\u6C60\u4E2D\u7684\u6700\u5C0F\u7A7A\u95F2\u8FDE\u63A5
|
||||
spring.redis.jedis.pool.min-idle=0
|
||||
# \u8FDE\u63A5\u8D85\u65F6\u65F6\u95F4(\u6BEB\u79D2)
|
||||
spring.redis.timeout=100ms
|
||||
# \u6570\u636E\u5E93\u7D22\u5F15(\u9ED8\u8BA4\u4E3A0)
|
||||
spring.redis.database=1
|
||||
## -------------------------EhCache\u914D\u7F6E
|
||||
spring.cache.ehcache.config=ehcache.xml
|
||||
@@ -0,0 +1,37 @@
|
||||
## -------------------------\u6570\u636E\u6E90\u914D\u7F6E
|
||||
spring.datasource.username=root
|
||||
spring.datasource.password=123456
|
||||
spring.datasource.url=jdbc:mysql://192.168.172.3:3306/zilean-test?useUnicode=true&characterEncoding=utf8&useSSL=false&allowMultiQueries=true
|
||||
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
|
||||
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
|
||||
## -------------------------\u6570\u636E\u6E90\u8FDE\u63A5\u6C60\u914D\u7F6E
|
||||
# \u521D\u59CB\u5316\u65F6\u5EFA\u7ACB\u7269\u7406\u8FDE\u63A5\u7684\u4E2A\u6570
|
||||
spring.datasource.druid.initial-size=5
|
||||
# \u6700\u5C0F\u8FDE\u63A5\u6C60\u6570\u91CF
|
||||
spring.datasource.druid.min-idle=5
|
||||
# \u6700\u5927\u8FDE\u63A5\u6C60\u6570\u91CF\uFF0CmaxIdle\u5DF2\u7ECF\u4E0D\u518D\u4F7F\u7528
|
||||
spring.datasource.druid.max-active=20
|
||||
# \u83B7\u53D6\u8FDE\u63A5\u65F6\u6700\u5927\u7B49\u5F85\u65F6\u95F4\uFF0C\u5355\u4F4D\u6BEB\u79D2
|
||||
spring.datasource.druid.max-wait=60000
|
||||
# \u7533\u8BF7\u8FDE\u63A5\u7684\u65F6\u5019\u68C0\u6D4B\uFF0C\u5982\u679C\u7A7A\u95F2\u65F6\u95F4\u5927\u4E8EtimeBetweenEvictionRunsMillis\uFF0C\u6267\u884CvalidationQuery\u68C0\u6D4B\u8FDE\u63A5\u662F\u5426\u6709\u6548
|
||||
spring.datasource.druid.test-while-idle=true
|
||||
# \u65E2\u4F5C\u4E3A\u68C0\u6D4B\u7684\u95F4\u9694\u65F6\u95F4\u53C8\u4F5C\u4E3AtestWhileIdel\u6267\u884C\u7684\u4F9D\u636E
|
||||
spring.datasource.druid.time-between-eviction-runs-millis=60000
|
||||
# \u9500\u6BC1\u7EBF\u7A0B\u65F6\u68C0\u6D4B\u5F53\u524D\u8FDE\u63A5\u7684\u6700\u540E\u6D3B\u52A8\u65F6\u95F4\u548C\u5F53\u524D\u65F6\u95F4\u5DEE\u5927\u4E8E\u8BE5\u503C\u65F6\uFF0C\u5173\u95ED\u5F53\u524D\u8FDE\u63A5
|
||||
spring.datasource.druid.min-evictable-idle-time-millis=30000
|
||||
# \u7528\u6765\u68C0\u6D4B\u8FDE\u63A5\u662F\u5426\u6709\u6548\u7684sql\uFF0C\u5FC5\u987B\u662F\u4E00\u4E2A\u67E5\u8BE2\u8BED\u53E5
|
||||
# mysql\u4E2D\u4E3A select 'x'
|
||||
# oracle\u4E2D\u4E3A select 1 from dual
|
||||
spring.datasource.druid.validation-query=select 'x'
|
||||
# \u7533\u8BF7\u8FDE\u63A5\u65F6\u4F1A\u6267\u884CvalidationQuery\u68C0\u6D4B\u8FDE\u63A5\u662F\u5426\u6709\u6548\uFF0C\u5F00\u542F\u4F1A\u964D\u4F4E\u6027\u80FD\uFF0C\u9ED8\u8BA4\u4E3Atrue
|
||||
spring.datasource.druid.test-on-borrow=false
|
||||
# \u5F52\u8FD8\u8FDE\u63A5\u65F6\u4F1A\u6267\u884CvalidationQuery\u68C0\u6D4B\u8FDE\u63A5\u662F\u5426\u6709\u6548\uFF0C\u5F00\u542F\u4F1A\u964D\u4F4E\u6027\u80FD\uFF0C\u9ED8\u8BA4\u4E3Atrue
|
||||
spring.datasource.druid.test-on-return=false
|
||||
# \u662F\u5426\u7F13\u5B58preparedStatement\uFF0Cmysql5.5+\u5EFA\u8BAE\u5F00\u542F
|
||||
# pool-prepared-statements: true
|
||||
# \u5F53\u503C\u5927\u4E8E0\u65F6poolPreparedStatements\u4F1A\u81EA\u52A8\u4FEE\u6539\u4E3Atrue
|
||||
spring.datasource.druid.max-pool-prepared-statement-per-connection-size=20
|
||||
# \u914D\u7F6E\u6269\u5C55\u63D2\u4EF6
|
||||
spring.datasource.druid.filters=stat,wall
|
||||
# \u5408\u5E76\u591A\u4E2ADruidDataSource\u7684\u76D1\u63A7\u6570\u636E
|
||||
spring.datasource.druid.use-global-data-source-stat=true
|
||||
@@ -0,0 +1,11 @@
|
||||
## -------------------------Jpa\u914D\u7F6E(\u4E3B\u8981\u7528\u4E8E\u81EA\u52A8\u5EFA\u8868)
|
||||
# \u5EFA\u8868\u7B56\u7565, \u5B9E\u4F53\u7C7B\u53D8\u66F4\u5373\u6539\u53D8\u8868\u7ED3\u6784
|
||||
spring.jpa.hibernate.ddl-auto=update
|
||||
# \u8868\u5B57\u6BB5\u547D\u540D\u89C4\u5219, \u9047\u5230\u5927\u5199\u5B57\u6BCD \u52A0\u201D_\u201D\u7684\u547D\u540D
|
||||
spring.jpa.hibernate.naming.physical-strategy=org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy
|
||||
# \u663E\u793A\u5EFA\u8868\u8BED\u53E5
|
||||
spring.jpa.show-sql=true
|
||||
# \u9ED8\u8BA4\u4F7F\u7528MyISAM(\u8868\u793A\u4F7F\u7528MySQL)
|
||||
spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect
|
||||
# Open Session In View\u7B80\u79F0OSIV\uFF0C\u662F\u4E3A\u4E86\u89E3\u51B3\u5728mvc\u7684controller\u4E2D\u4F7F\u7528\u4E86hibernate\u7684lazy load\u7684\u5C5E\u6027\u65F6\u6CA1\u6709session\u629B\u51FA\u7684LazyInitializationException\u5F02\u5E38\uFF1B\u5BF9hibernate\u6765\u8BF4ToMany\u5173\u7CFB\u9ED8\u8BA4\u662F\u5EF6\u8FDF\u52A0\u8F7D\uFF0C\u800CToOne\u5173\u7CFB\u5219\u9ED8\u8BA4\u662F\u7ACB\u5373\u52A0\u8F7D
|
||||
spring.jpa.open-in-view=false
|
||||
@@ -0,0 +1,3 @@
|
||||
## -------------------------MyBatis\u914D\u7F6E(ORM)
|
||||
# mapper\u6620\u5C04\u6587\u4EF6\u6240\u5728\u7684\u8DEF\u5F84
|
||||
mybatis.mapper-locations=classpath:mappers/**/*Mapper.xml
|
||||
@@ -0,0 +1,8 @@
|
||||
## \u5E94\u7528\u914D\u7F6E
|
||||
# \u662F\u5426\u5F00\u542F\u8C03\u8BD5\u6A21\u5F0F\uFF0C\u8F93\u51FA\u6240\u6709\u4FE1\u606F
|
||||
debug=false
|
||||
## Server\u914D\u7F6E
|
||||
server.port=8080
|
||||
server.tomcat.uri-encoding=utf-8
|
||||
server.servlet.context-path=/zliean-test
|
||||
spring.profiles.active=database,jpa,mybatis,cache
|
||||
@@ -0,0 +1,13 @@
|
||||
package cn.odboy.zilean.test;
|
||||
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mybatis.spring.boot.test.autoconfigure.MybatisTest;
|
||||
import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase;
|
||||
import org.springframework.test.context.junit4.SpringRunner;
|
||||
|
||||
@RunWith(SpringRunner.class)
|
||||
@MybatisTest
|
||||
@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
|
||||
public class ZileanTestApplicationTests {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,131 @@
|
||||
package cn.odboy.zilean.test.demo;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.date.DateTime;
|
||||
import cn.odboy.zilean.dao.IUserDao;
|
||||
import cn.odboy.zilean.entity.User;
|
||||
import cn.odboy.zilean.mybatis.core.EntityPropNav;
|
||||
import cn.odboy.zilean.mybatis.page.Page;
|
||||
import cn.odboy.zilean.test.ZileanTestApplicationTests;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import lombok.extern.log4j.Log4j2;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.test.annotation.Rollback;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author: Odboy
|
||||
* @version: Jdk 1.8
|
||||
* @desc: TODO SqlHandle功能单元测试
|
||||
* @time: 2019/8/9 7:22
|
||||
* @blog: www.odboy.cn
|
||||
*/
|
||||
@Log4j2
|
||||
public class SqlBuilderTest extends ZileanTestApplicationTests {
|
||||
@Autowired
|
||||
private IUserDao userDao;
|
||||
|
||||
@Test
|
||||
public void testInsert() {
|
||||
log.info("新增");
|
||||
User user;
|
||||
for (int i = 0; i < 100000; i++) {
|
||||
user = new User();
|
||||
user.setUsername("tianjun" + i);
|
||||
user.setUserpwd("123456");
|
||||
user.setBgmUrl("背景音乐Url");
|
||||
user.setAutograph("如果你的人生没有那么多的喝彩,就请默默努力吧");
|
||||
user.setBirth(DateTime.now());
|
||||
user.setHometown("江西省赣州市上犹县");
|
||||
user.setJoinWorkDate(DateTime.now());
|
||||
user.setLastLoginTime(DateTime.now());
|
||||
user.setMaritalStatus("全栈工程师");
|
||||
user.setPhoneNum("13621988781");
|
||||
user.setRealName("田俊");
|
||||
user.setLogoUrl("头像Url");
|
||||
user.setRemark("呵呵哒~");
|
||||
user.setSex(Byte.valueOf("0"));
|
||||
user.setCreateTime(DateTime.now());
|
||||
log.info(JSON.toJSONString(user));
|
||||
Assert.assertSame("受影响的行数", 1, userDao.insertSelective(user));
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
@Rollback(false)
|
||||
public void testUpdate() {
|
||||
User user = new User();
|
||||
log.info("修改");
|
||||
user.setId(2L);
|
||||
user.setBgmUrl("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
|
||||
Assert.assertSame("受影响的行数", 1, userDao.updateSelectiveById(user));
|
||||
}
|
||||
|
||||
@Test
|
||||
@Rollback(false)
|
||||
public void testDelete() {
|
||||
log.info("删除");
|
||||
Assert.assertSame("受影响的行数", 1, userDao.deleteById(201L));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testQuery() {
|
||||
List<User> users;
|
||||
User user;
|
||||
long total;
|
||||
|
||||
log.info("通过主键ID查询");
|
||||
user = userDao.selectOneById(2L);
|
||||
log.info("user=" + JSON.toJSONString(user));
|
||||
|
||||
log.info("通过对象属性名称和值查询");
|
||||
users = userDao.selectByNav(EntityPropNav.build("username", "tianjun"));
|
||||
log.info("users=" + JSON.toJSONString(users));
|
||||
users = userDao.selectByNav(EntityPropNav.build("id", 2));
|
||||
log.info("users=" + JSON.toJSONString(users));
|
||||
|
||||
log.info("通过对象属性名称和值模糊查询");
|
||||
users = userDao.selectByLikeNav(EntityPropNav.build("username", "tian"));
|
||||
log.info("users=" + JSON.toJSONString(users));
|
||||
|
||||
log.info("无条件分页查询");
|
||||
users = userDao.selectByPage(null, new Page());
|
||||
log.info("users=" + JSON.toJSONString(users));
|
||||
|
||||
log.info("条件分页查询");
|
||||
user = new User();
|
||||
user.setId(2L);
|
||||
users = userDao.selectByPage(user, new Page());
|
||||
log.info("users=" + JSON.toJSONString(users));
|
||||
|
||||
|
||||
log.info("不分页查询所有");
|
||||
users = userDao.selectAll(null);
|
||||
log.info("users=" + JSON.toJSONString(users));
|
||||
|
||||
log.info("含条件不分页查询所有");
|
||||
user = new User();
|
||||
user.setUsername("tianjun1");
|
||||
users = userDao.selectAll(user);
|
||||
log.info("users=" + JSON.toJSONString(users));
|
||||
|
||||
log.info("简易 in 查询");
|
||||
users = userDao.selectAllInValues("id", CollUtil.newArrayList(1, 2, 4, 5));
|
||||
log.info("users=" + JSON.toJSONString(users));
|
||||
users = userDao.selectAllInValues("username", CollUtil.newArrayList("'tianjun1'", "'tianjun3'"));
|
||||
log.info("users=" + JSON.toJSONString(users));
|
||||
|
||||
log.info("无条件统计数量");
|
||||
total = userDao.countAll(null);
|
||||
log.info("total=" + total);
|
||||
|
||||
log.info("含条件统计数量");
|
||||
user = new User();
|
||||
user.setUsername("tianjun1");
|
||||
total = userDao.countAll(user);
|
||||
log.info("total=" + total);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user