代码编写技巧

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/bestcxx/article/details/72857571

1、update/insert 方法使用技巧

update执行完毕后要判断是否执行成功,即update的条数是否符合预期,如果不符合则主动抛出异常,throws Exception

方法体

 

throws Exception

 

 

具体update或者insert

 

int num= demoDao.updateDemoVo(demoVo);
            if(num!=1){
                throw new Exception();
            }

 

 

 

 

 

 

 

 

 

2、update修改金额等计数类属性

修改计数类属性要在sql语句中进行计算,而不是使用set计算后结果,即set  a=a+#{b}

 

3、update状态要注意由状态一变为状态二

状态一应加到where条件中

 

4、对外提供接口,不能直接使用service层

对外提供接口不能直接使用service层,而是应该再包装一层,一个是低耦合,一个是service层出现异常依旧可以给接口调用方返回结果,不至于中断

 

5、对于增减操作以及增的限制

比如用户购买商品,而且用户被限购,应该是先减少商品数,然后增加用户购买数,在用户增加购买商品数的时候,需要在sql中增加购买总数没有超过限制的判断-代码判断了虽然,sql语句也要增加判断。

 

6、对于定时任务,要注意限制批量操作的条数

对于定时任务,要注意限制批量操作的条数

 

7、使用switch必须在满足条件后跟随break

switch的运行机制是,case 条件满足后运行本条,如果没有break则运行之后所有的,而不再判断

 

8、List<Map<String.Object>> 遍历并且赋值并不能改变该list的参数状态

 

@Test
	public void test1(){
		List<Map<String,Object>> list=new ArrayList<Map<String,Object>>();
		List<Map<String,Object>> list2=new ArrayList<Map<String,Object>>();
		for(int i=0;i<3;i++){
			Map<String,Object> map=new HashMap<String, Object>();
			map.put("name", "name"+i);
			System.out.println(map.get("name"));
			list2.add(map);
		}
		
		for(Map<String,Object> map:list){
			System.out.println("2"+map.get("name"));
		}
		for(Map<String,Object> map:list2){
			System.out.println("3"+map.get("name"));
		}
		System.out.println("运行结束");
	}


运行结果

 

 

name0
name1
name2
3name0
3name1
3name2
运行结束

 


9、mybatis搜索数据库从Map中取值的技巧

 

分为两种情况,参数类型为 String,Int,boolean和其他

map为空

这些是针对搜索数据的情况,如果搜索条件不满足,则返回的结果就是null

如果,是其他类型,在Map<Stirng,Object>的情况下,直接获取map.get("key");也是Ok的,但是千万注意,如果在map前加类型转化,要注意是否可以强转。

int可以使用.toString,其他可以根据数据库类型加(String),(Integer)等。

 

@Test
	public void HashMapTest(){
		Map<String,Object> map=new HashMap<String,Object>();
		map.put("flag", true);
		
		System.out.println(map.get("flag")+map.toString());
		
		map.put("float", 1.02f);
		System.out.println((float)map.get("float"));
		
		map.put("string","1.01");
		System.out.println((String)map.get("string"));
		
		map.put("null",null);
		System.out.println(map.get("null"));
		
		
		/*Map<String,Object> map2=null;
		System.out.println(map2.get("flag"));*///报错
		
		Integer integer=1;
		map.put("integer",integer);		
		System.out.println(map.get("integer").toString()+"  +1");
		/*System.out.println((String)map.get("integer")+" +2");*///报错
		
		
	}

结果:

true{flag=true}
1.02
1.01
null
1  +1

 

 

10、接口访问使用@ResponseBody的访问效率不如全局配置

接口访问返回json串的实现有两种主要的方式,第一是使用@ResponseBody,将接口返回的实体转化为json串

第二种是增加配置

 

<!-- 实体 json 自动映射转化 -->
  <bean id="jsonConverter"class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
  	<property name="supportedMediaTypes" value="application/json"/>
  </bean>


类上增加标注

 

 

@RestController
public class RestfulController {


方法增加Mapping

 

 

@GetMapping(value="restfulGetNoResponseBody")


实验证明,使用第二种方式效率会很高。

 

第一种方法也需要再类和方法上增加相应注解@Controller或者@RestController,@GetMapping等,但是不会影响访问效率。

 

 

 

展开阅读全文

没有更多推荐了,返回首页