- 主从数据库
- Rest Api规范
- Testing 测试框架
- PostMan 测试框架
- 前端框架
- 安全框架
- 使用文档
- 部署文档
UserMapper->selectUserByAccount
@Select({
"select",
"*",
"from wk_user",
"where username = #{account} or phone=#{account} or email=#{account}"
})
User selectUserByAccount( String account);
RoleMapper->selectRolesByUserid
@Select({
"select",
"wk_role.*",
"from wk_role",
"join wk_user_role on wk_user_role.role_id=wk_role.role_id",
"where wk_user_role.user_id = #{userid,jdbcType=INTEGER}",
"order by sort"
})
@Results({
@Result(column="role_id", property="roleId", jdbcType=JdbcType.INTEGER, id=true),
@Result(column="rolename", property="rolename", jdbcType=JdbcType.VARCHAR),
@Result(column="description", property="description", jdbcType=JdbcType.VARCHAR),
@Result(column="sort", property="sort", jdbcType=JdbcType.INTEGER)
})
List<Role> selectRolesByUserid(Integer userid);
不用自动检索
SpringBoot有好处,也有坏处,坏处是你必须要按照他的规则把文件放在特定目录下,不然就出现错误
//@SpringBootApplication(scanBasePackages={"com.wukong.core","com.wukong.examples","com.wukong.security"})
@SpringBootApplication()
使用了注解的样式,删除了动态sql
<!--<dependency>-->
<!--<groupId>org.mybatis.dynamic-sql</groupId>-->
<!--<artifactId>mybatis-dynamic-sql</artifactId>-->
<!--<version>1.0.0</version>-->
<!--</dependency>-->
TODO 看看怎么启用Mybatis的一级缓存,同时集成分页插件
1、把核心模块追加了
2、TODO
2.1、在testNG中加入Token,不然运行不了
2.2、将权限信息保存到数据库中,便于调整
2.3、将Token保存到redis中,这样可以提高效率
最好做一个开关,可以保存到内存也可以保存到redis中
今天有重大收获,通过拦截器自动给testNg追加tonken,!!!
1、追加了BasicJwtInterceptor,每个request追加token
2、HelloControllerTests 中追加@BeforeMethod,初始化上面的拦截器
HelloControllerTests 相关代码
@BeforeMethod
public void getToken(){
String url="/author/jwt/login?username=admin&password=admin";
ResponseEntity<Map> entity = this.restTemplate.getForEntity(url, Map.class);
assertThat(entity.getStatusCode()).isEqualTo(HttpStatus.OK);
Map<String, String> returnMap=entity.getBody();
String token=returnMap.get("token");
BasicJwtInterceptor basicJwtInterceptor= new BasicJwtInterceptor(token);
restTemplate.getRestTemplate().getInterceptors().add(basicJwtInterceptor);
}
BasicJwtInterceptor 相关代码
public BasicJwtInterceptor(String token) {
Assert.hasLength(token, "token must not be empty");
this.token = token;
}
@Override
public ClientHttpResponse intercept(HttpRequest request, byte[] body,
ClientHttpRequestExecution execution) throws IOException {
request.getHeaders().add("Authorization", token);
return execution.execute(request, body);
}
1、熟悉了javaparse的工作原理
2、书写了Mybatis代码生成的原理,可以自动的添加table,并且可以追加内容进行相关代码的生成。
3、原先想将配置数据用springboot来配置,后来发现不用了。先读取xml文件,然后调用数据库相关文件。
1、 @DatasourceAnno(name=master) 或 @DatasourceAnno(name=slave) 后不再根据函数名来判断获取的数据库
2、maven 引用了 spring-boot-starter-aop ,就不用引用aspectjweaver
3、wukong-generator 用来生成相关的代码
todo
1、代码生成器
2、安全框架
3、主键不会返回
4、生成class类的时候,要把前缀给去掉
主要工作
1、实现了 1个master库, n个slave库。1个master库, 3个slave库,出现select时,从slave库上轮训选择要查询的库
2、集成了阿里的druid数据源,spring 推荐的是hikariCP ,速度快稳定。 druid太复杂,但是容易监控sql语句
3、输入https://localhost:8443/druid/, 能看到druid的监控页面
4、解决了springBoot跨包的问题
@SpringBootApplication(scanBasePackages={"com.wukong.core","com.wukong.examples"})
todo
~~1、@todo 撰写一个标签 可以制定从主数据库上读取数据~~
2、@todo 今后可以动态的配置slave数量
3、@todo 撰写unitTest保证这部分数据没有问题。
4、@todo 拦截器可以配置到配置文件中
~~5、@todo 将代码移到core目录中~~
6、@todo 升级druid到1.8.1版本,看看好用不用。 估计要同时升级到springboot2.0
~~7、@todo 使用spring的aop,而不是老的apache的aop~~
~~8、@todo service方法中只要是:insert update delete add remove 就表示非查询语句~~
思考
到底拦截器做在DAO(sql)上好 还是在service上好
service的好处
1、数据源这部分代码简单。
2、今后可以重用Dao的这部分代码? 但是想想,这条不成立。
坏处:
1、如果有人从controler这部分调用dao,就拦截不住。
1、集成了mybatis,按照官网的,越简单越好
2、testNG中进行了测试,分别测试了Dao与Service,今后只用测试Service
3、引入了这个aspectj包太老了,看看有没有其他更好的
~~4、@todo mybatis多数据源与动态切换,官方应该有特别简单例子,这样符合springboot的特点
,别上网看那些代码,写的太复杂 ~~
1、添加了文件上传 下载
2、post json代码
3、http2https重新定向
4、testng参数测试
5、@todo testng 传递对象测试 excel表测试 随机数测试
1、多pom
2、https
3、testNG测试
4、rest接口