发表于: 2018-03-29 14:03:48

1 484


今天完成的事情:(一定要写非常细致的内容,比如说学会了盒子模型,了解了Margin) 

昨天的问题解决了。。很喜剧。

我把Impl里的UserServiceImpl 拉到service包里 然后再放回去 就ok了。莫名其妙。。总之是mac的锅


今天写Main函数 我打算先参考师兄的写 再弄懂每个代码的意思,深入。之后再融会贯通 把整个流程理清楚。

首先是增;

public class Main {
public static void main(String[] args) {

       Logger logger = Logger.getLogger(Main.class.getName());
       UserService userService = new UserServiceImpl();
       User user = new User("luo", "java", "3.27", "3535","duan", "chuanmei", "http://www.jnshu.com/school/22624/daily", "好好学习", "7292398782", "知乎");

long startInsert = System.currentTimeMillis();
for (int i = 0; i < 50; i++) {
try {。         
               logger.info("->Succeed adding a student whose id is " + userService.add(user));
           } catch (DuplicateKeyException e) {
               logger.info("-->WARNING" + e.getMessage());
           } catch (Exception ex) {
               logger.info(ex.getClass().getSimpleName());
               logger.info
("-->Error happens when adding.");
           }
       }
long endInsert = System.currentTimeMillis();
       logger.info("-->All inserts done ,it costs " + (endInsert - startInsert) + " ms.");
//声明一个日志的对象

Logger logger = Logger.getLogger(Main.class.getName());

初始化userService

UserService userService = new UserServiceImpl();

这里出现波浪线 是因为 没有在modle层中 构造 。

User user = new User("luo""java""3.27""3535","duan""chuanmei""http://www.jnshu.com/school/22624/daily""好好学习""7292398782""知乎");

另外 需要写一个无参构造函数

public User(){}

关于无参构造函数

子类继承父类的时候会自动继承父类的默认构造函数(也就是继承那个无参数的构造函数)。而你的类里面已经有一个带有参数的构造函数了,如果你没有写那个默认的不带参数的构造函数的话,继承的时候子类就会报错,因为系统不知道要不继承哪个构造函数,必须明确的使用super()关键字来描述。所以我们一般为了避免这种错误的发生,在有带有多个构造函数的类里面都会写一个不带参数的构造函数。


记录开始增加数据时间

long startInsert = System.currentTimeMillis();

递增

for (int i = 0; i < 50; i++)

打出日志

 logger.info("->Succeed adding a student whose id is " + userService.add(user));


e.toString()获取的信息包括异常类型和异常详细消息,而e.getMessage()只是获取了异常的详细消息字符串。

 logger.info("-->WARNING" + e.getMessage());

然后运行

3月 30, 2018 12:37:30 上午 mybatis.Main main

信息: DataIntegrityViolationException

报错主键重复。





运行main函数后

其中报错 userMapper=null

因为main为函数入口 从main开始的话 Ios容器还没建立 所以无法用

@Autowired

注释 只能用getBean

private static ApplicationContext context =new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
private static UserMapper userMapper=context.getBean(UserMapper.class);

要注意的是 前面要加静态修饰

静态修饰符用于修饰成员变量或函数 

比如 

public class UU{ 

final static int P=2;

final int E=3;

public static void main(String[] args){

System.out.print(P);

UU e=new UU;

System.out.print(e.E);

}

}

看到上面 P 能够直接使用 而E则是被需要的时候才会出现。

当一个变量前面有了static这个修饰符,内存会为它分配唯一的一块存储空间。
程序跑起来的时候,变量就存在在内存里了。谁要用它,就去访问一下它所在的内存。


而且 静态块的加载在main前面 

所以用getBean 且加了static 后 能使用usermapper

相关资料出自https://www.zhihu.com/question/23168955/answer/28422467


回滚(Rollback)指的是程序或数据处理错误,将程序或数据恢复到上一次正确状态的行为。回滚包括程序回滚和数据回滚等类型。


明天计划的事情:(一定要写非常细致的内容) 
遇到的问题:(遇到什么困难,怎么解决的) 
收获:(通过今天的学习,学到了什么知识)


返回列表 返回列表
评论

    分享到