zoukankan      html  css  js  c++  java
  • java实战

    ------------恢复内容开始------------

    1、http://learning.happymmall.com/

         http://www.happymmall.com/index.html  前台官网

         http://test.happymmall.com/    开放前台

         http://admintest.happymmall.com/  开放后台

       资料: https://www.imooc.com/article/18998

    2、

     

      bin 包含mvn的运行脚本

      boot包含一个类加载器的框架 ,maven使用它来加载自己的类库

      conf是一些配置文件,里面有我们经常用到的settings

      lib包含了maven平时用到的谁有类库,除了自生的,还有一些第三方的类库

      依赖原则:

             1、短路优先

              

                  依赖第二个

             2、如果是同样的路,那就看pom文件里,谁在前面

     3、

     4、mysql账号 密码:root 1234

    5、

    https://github.com/pagehelper/Mybatis-PageHelper     Mybatis-PageHelper插件

     6、

    /**
    *
    * @param username
    * @param password
    * @param session
    * @return
    */
    快捷键是 /** 回车

    @ResponseBody  这个的作用是返回的数据序列化成json

    7、包结构

    pojo:简单的数据库的一个对象,上一层 vo进行封装然后返给controller

    controller--->service-->dao-->vo-->pojo

    8、mybatis-generator

    根据数据库自动生成pojo、dao和xml文件,pojo里面放的是和db的字段一一对应的一个对象,dao层是一个接口,供我们service调用;xml使我们dao层接口的实现,也就是说:

    我们的sql语句都可以写在xml里面

    9、使用mybatis-generator创建好dao、pojo、mappers后。

    这个不显示,解决办法是在settings-->plugins里安装MyBatis plugin

    由于MyBatis plugin是收费的,所以我现在用的是Free MyBatis plugin(没有MyBatis plugin好看)

    10、idea的配置

    (实时编译,只要编写后错误,就会在problems里输出)打开Problems

    当我们使用@Autowired注解的时候,当注入到一个类时,因为我们用的mybatis,默认的idea会认为这是一个错误,会提示找不到对应的bean,但是我们的项目是能正常运行的,因为我们用的是spring auto scan自动

    扫描的这种方法,

     11、

    横向越权:比如A用户可以查看自己的订单详情,我们在写接口的时候不注意,使得只要传入订单号就能查看详情,这样有可能会造成一个问题,A用户使用使用订单号恶意获取其他订单号的信息

    12、

    方法上加了@ResponseBody,返回的是经过MappingJacksonHttpMessageConverter处理的json数据

    解析:

    dispatcher-servlet.xml

    <mvc:annotation-driven>
            <mvc:message-converters>
                <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                    <property name="supportedMediaTypes">
                        <list>
                            <value>text/plain;charset=UTF-8</value>
                            <value>text/html;charset=UTF-8</value>
                        </list>
                    </property>
                </bean>
               <!-- 自动反序列化的配置 -->
                <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
                    <property name="supportedMediaTypes">
                        <list>
                            <value>application/json;charset=UTF-8</value>
                        </list>
                    </property>
                </bean>
            </mvc:message-converters>
        </mvc:annotation-driven>

    如何使用呢,申明一个bean,property为supportedMediaTypes

    我们来看看MappingJacksonHttpMessageConverter的代码

    没有supportedMediaTypes,继续找它的父类

    找到了,相当于把给supportedMediaTypes注入值

    13、

    @Autowired注解
    它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作

        @Autowired
        private UserMapper userMapper;

    通过spring scan扫描包的方式,来进行自动加载

    扫描的是applicationContext.xml

    mybatis扫描的是applicationContext-datasource.xml,地址为dao文件夹定义的类



    14、set操作对象的时候,
    equals和hashCode都要重写,如果比较俩个对象相同,他们的equals和hashCode都要相同,但如果hashCode相同,那equals也不一定相同
    比如hashCode里是id和name,而equals是Id,那就不行。所以我们在重写equals和hashCode的时候,这俩个都要重写,而且参数要一致
    15、

    16、

     

     POJO Java简单对象,用POJO定义成和数据库中的字段是一模一样的,里面不会填充业务逻辑


    17、
    静态代码块优于普通代码块,普通代码块优于构造代码块
    静态代码块:类被加载的时候执行且只执行一次,一般我们都用它做初始化静态变量
    构造代码块:我们每次构造这个对象的时候都会执行
        static {
    
        }
    
        {
    
        }
    
        public PropertiesUtil(){
    
        }

     18、idea的配置

     19、使用MyBatis-PageHelper实现分页功能

    public ServerResponse<PageInfo> getProductList(int pageNum, int pageSize) {
    //         1.pageHelper.startPage
    //         2.sql查询逻辑
    //         3.处理查询到的结果(进行结果筛选->vo对象)
    //         4.pageHelper收尾(aop)
    
            PageHelper.startPage(pageNum, pageSize);
    
            List<Product> productList = productMapper.selectList();
    
            List<ProductListVo> productListVoList = Lists.newArrayList();
            for(Product productItem : productList) {
                ProductListVo productListVo = assembleProductListVo(productItem);
                productListVoList.add(productListVo);
            }
    
            //先用默认的结果
            PageInfo pageResult = new PageInfo(productList);
            //传给前端的用筛选后结果
            pageResult.setList(productListVoList);
    
            return ServerResponse.createBySuccess(pageResult);
        }

     20、使用natapp进行支付宝支付功能测试

    https://coding.imooc.com/lesson/96.html#mid=3506

     21、使用System.currentTimeMillis()获取当前时间

    在开发过程中,通常很多人都习惯使用new Date()来获取当前时间。new Date()所做的事情其实就是调用了System.currentTimeMillis()。如果仅仅是需要或者毫秒数,那么完全可以使用System.currentTimeMillis()去代替new Date(),效率上会高一点。



    ------------恢复内容结束------------

  • 相关阅读:
    多线程中,上锁的理解
    sql server 2008 联机丛书
    序列化是线程安全的么
    对象化下的编程——字段
    Dic实现工厂模式
    design principle:java 回调与委派/委托机制(转)
    风筝数据结构学习笔记(2)后序遍历二叉树(非递归)
    风筝数据结构学习笔记(1)利用链式存储结构和递归构建二叉树
    吕震宇老师《设计模式系列》
    吕震宇老师《设计模式随笔系列》
  • 原文地址:https://www.cnblogs.com/zhaobao1830/p/12651952.html
Copyright © 2011-2022 走看看