发表于: 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)指的是程序或数据处理错误,将程序或数据恢复到上一次正确状态的行为。回滚包括程序回滚和数据回滚等类型。
明天计划的事情:(一定要写非常细致的内容)
遇到的问题:(遇到什么困难,怎么解决的)
收获:(通过今天的学习,学到了什么知识)
评论