代码编写技巧

来源:互联网 发布:oracle数据库漏洞 编辑:程序博客网 时间:2024/05/17 22:55

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的参数状态

@Testpublic 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("运行结束");}

运行结果

name0name1name23name03name13name2运行结束


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

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

map为空

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

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

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

@Testpublic 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.021.01null1  +1


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

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

第二种是增加配置

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

类上增加标注

@RestControllerpublic class RestfulController {

方法增加Mapping

@GetMapping(value="restfulGetNoResponseBody")

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

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




原创粉丝点击