传智博客的的新项目乐优商城,很幸运可以学新项目,哈哈哈
我们是第一期学到乐优商城的,真的好爽。当得到消息,我们第一个项目是乐优商城的时候,我都激动死了,感觉可以学到时髦的springboot和springcloud真是再好不过的事情。可是,我们班有些人竟然说自己是小白鼠,可是在我看来,这是天大的好事。幸好,最后上面计划没有改变。我还是如愿上到了乐优商城。
第一天遇到两个坑,花费了我好几个小时,值得写一波
第一个坑:
This application has no explicit mapping for /error, so you are seeing this as a fallback.
Sun May 20 17:19:12 CST 2018
There was an unexpected error (type=Internal Server Error, status=500).
### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'note' in 'field list' ### The error may exist in com/leyou/mapper/UserMapper.java (best guess) ### The error may involve com.leyou.mapper.UserMapper.selectByPrimaryKey-Inline ### The error occurred while setting parameters ### SQL: SELECT id,user_name,password,name,age,sex,birthday,created,updated,note FROM tb_user WHERE id = ? ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'note' in 'field list' ; bad SQL grammar []; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'note' in 'field list'
报这个错误的原因是pojo类比它对应的表中多一个字段,把哪个多余的字段删除即可。
通用mapper应该是通过pojo类生成具体的sql语句的,如果pojo类中多一个字段,那么查询的时候,这个字段就会存在于sql语句中,这样就导致了这个错误。
解决方法:删掉pojo类中多余的字段
第二个坑:
Caused by: java.lang.IllegalStateException: Cannot load driver class: com.mysql.jdbc.Driver
原因:springboot自带版本管理,我只需要引入相关依赖,而不用引入具体版本,没想到mysql的驱动没有加载进来,这个是万万没想到的,配置文件配置的时候也出错
这里driver是红色的,证明没有加载进来,坑啊,mysql驱动是5.1.45这个版本,我把本地库里的删了,又重新加载了一下就好了,都是泪,花费了好几个小时研究这个问题,各种清空没下载完成的都没用,没想到是下载好的完整的jar包出了问题。
解决方案:在maven的本地仓库中找到mysql驱动对应 的版本,去依赖库中删除,重新下载就好了。
进入正题,springboot入门
1.入门项目
org.springframework.boot
spring-boot-starter-parent
2.0.0.RELEASE
org.springframework.boot
spring-boot-starter-web
1.8
@SpringBootApplication
public class Application {
public static void main(String[] args){
SpringApplication.run(Application.class,args);
}
}
@RestController
public class HelloController {
@GetMapping("hello")
public String hello(){
return "hello springboot";
}
}
其中RestController规定了返回值必须是json,相当于@ResponseBody和@controller的结合GetMapping相当于
2.入门案例运行原理
主要原因是3个注解
@SpringBootConfiguration声明类是一个配置类
@EnableAutoConfiguration自动配置,根据依赖去猜测该配置什么
@ComponentScan注解的自动扫描,相当于之前的
3.springboot是如何消灭xml的
java注解的方式
@configuration = xml文件
@Bean =
@value =
@PropertySource =
springboot的方式
先用一个类A来取出配置文件中的数据
@ConfigurationProperties 这个注解定义的类来封装application.properties中的数据
在配置类中通过注解引入类A
@Configuration
@EnableConfigurationProperties
在配置类中引入类A的对象有三种方式
通过@Bean进行属性的注入,
如果这个配置只在一处使用,那么就没必要写一个配置类,我们直接把外部配置引入到配置类中
4.springboot如何添加拦截器
springboot中使用拦截器,
WebMvcConfigurer
并添加@Configuration,
@Bean
public LoginInterceptor loginInterceptor(){
return new LoginInterceptor();
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(this.loginInterceptor()).addPathPatterns("/**");
}
回顾:springmvc实现拦截器的方式
首先自定义一个拦截器
然后在配置文件有两种方式配置
<mvc:interceptors>
<bean class="cn.itcast.pojo.MyInterceptor1"/>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean class="cn.itcast.pojo.MyInterceptor2"/>
mvc:interceptor>
mvc:interceptors>
5.与mybaits整合,实现增删改查
1.引入jdbc技术的启动器
2.引入mysql的依赖,告诉springboot用的是mysql的驱动
6.Thymeleaf
一个html,既可以让前端看到静态效果,也可以让后端调试出动态效果。
使用时,需要引入启动器
其他:
1.springboot使用日志的级别
# 设置com.leyou包的日志级别为debug
logging.level.com.leyou=debug
2.jdk8新特性,接口方法的默认实现,好处是,这样减去用一个A类空实现这个接口中的方法,然后B类再继承A类这样的事情
报错:java.lang.NoSuchMethodException: tk.mybatis.mapper.provider.base.BaseSelectProvider.
应该导下面这个包,否则会报错
@乐优商城