1,java中读取properties配置文件中的内容。
将配置信息用@Value注解方式,直接注入到controller
2,避免空指针
Java避免空指针(转自https://blog.csdn.net/lonewolf521125/article/details/43149375)
====
1.空指针引起的原因
----
* 调用空对象的方法
* 访问或更新空对象的变量
* 获取空集合的长度
* 访问或更新空集合中的内容
* 抛出空的Throwable对象
* 同步空对象
2.避免空指针
----
为避免空指针,应当在使用之前确保对其做了适当的初始化。
1. 比较字符串时,模板在前,如:
> Sting str = null;
> if("test".equals(str)){
> //do something
> }
2. 检查方法传进来的参数是否为空,如:
> public static int getLength(){
> if(s == null){
> throw new IllegalArgumentException("The argument cannot be null"); >
> }
> return s.length();
> }
3. 使用String.valueOf()而不是toString()
4. 使用三元操作符,如:
> String message = (str == null) ? "":"message";
5. 方法返回空集合,而不是null,如:
> private static List<Integer> getList(String jsonData){
> if(jsonData == null){
> return Collections.emptyList();
> }
> //do something
> }
6. 使用Apache StringUtils类(如果是Android的话,可以使用TextUtils.isEmpty()方法),如:
> if(TextUtils.isEmpty(str))
7. 合理使用contains(),containsKey,containsValue等方法,如:
*
> Map<String, String> map = ...
> ...
> String key = ...
> if(map.containsKey(key)){
> //do something
> }
* > JSONObject jsonObject= new JSONObject() ;
> String key = ...
> if (jsonObject.has(key)) {
> try {
> long result = jsonObject.getLong(key);
> } catch (JSONException e) {
> e.printStackTrace();
> }
> }
8. 检查外部方法的返回值是否为空
9. 使用Assertions(断言),如:
> public static int getLength(String str){
> /*确定string不为空*/
> assert(str!=null);
> return str.length();
> }
此时如果str为空,那么则抛出java.lang.AssertionError异常而不是空指针异常
10. 使用Unit Tests
3,可以将对象作为参数传递
4,当返回类型为list等集合的时候,非空判定用list.size()!=0
5,远程调用之后,要对得到的数据进行处理
6,在controller和service里都写那些代码?
Controller,从字面上理解是控制器,所以它是负责业务调度的,所以在这一层应写一些业务的调度代码,而具体的业务处理应放在service中去写,而且service不单纯是对于dao的增删改查的调用,service是业务层,所以应该更切近于具体业务功能要求,所以在这一层,一个方法所体现的是一个可以对外提供的功能,比如购物商城中的生成订单方法,这里面就不简单是增加个订单记录那么简单,我们需要查询库存,核对商品等一系列实际业务逻辑的处理;
7,resultMap与resultType的区别及parameterType与parameterMap的区别
resultMap :当返回结果为自定义对象时使用 例一:resultMap 为自定义实体 对应关系 <resultMap id="BaseResultMap" type="com.test.model.Financial"> <result column="test_id" jdbcType="VARCHAR" property="testId" /> <result column="report_id" jdbcType="VARCHAR" property="reportId" /> <result column="bus_domain" jdbcType="VARCHAR" property="busDomain" /> </resultMap> <select id="getFinancials" parameterType="java.lang.String" resultMap="BaseResultMap"> SELECT * FROM financial where report_id=#{ id} </select> 例二 resultMap 为自定义实体 com.test.model.Financial <select id="getFinancials" parameterType="java.lang.String" resultMap="com.test.model.Financial"> SELECT * FROM mrs_business_financial where report_id=#{ id} </select> resultType :当返回结果为jdk自带对象时使用 例如:java.util.Map、int、String 例如: <select id="getFinancials" parameterType="java.lang.String" resultType ="int"> SELECT count(*) FROM financial </select> parameterType与parameterMap的区别于resultMap与resultType的区别是一样的, 结论: map是自定义的数据类型,type是jdk中有的数据类型 有结果(select语句)返回的时候,用result**,没有(INSERT、update语句)的时候就用parameter***
9,pageHelper的用法
作为业务代码,不要写在controller中,写在service
pageNo 为当前页
pageSize 为每页的数量
10,httpClient的用法(通过utils工具类)
调用工具类 post
远程接口如下
发起方配置如下
一入开发深似海,心怀大佬梦,管它高几重
时时当警醒,不做负心人