每日总结——7.17

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

远程接口如下

发起方配置如下

 


                                                          一入开发深似海,心怀大佬梦,管它高几重                                                                                     

                                                          时时当警醒,不做负心人

猜你喜欢

转载自blog.csdn.net/dr_HuangChao/article/details/81084525