-
老师的GitHub源码: https://github.com/leechenxiang/imooc-springboot-starter
查看全部 -
SpringBoot整合持久层框架有很多:例如SpringJDBC、Hibernate、Mybatis(这里SpringBoot整合Mybatis时,sql语句写在XML中,这种方式对于后期的维护、优化等方面可读性号,所以这里就不采用注解形式,把sql语句写在实体类中了)。
一、使用generatorConfig生成mapper以及pojo(SpringBoot官方提供了一套方法,这里使用一种更简洁的方式)。
步骤1:首先,需要引入一些依赖,如下图,有Mybatis、Mapper、Pagehelper,此外还需要引入数据源(这里使用阿里的druid)、mysql等等。
步骤2:如果想使用devtools热部署,还需要在application.properties中引入如下两段代码(部署到生产环境中就不用添加了)。
步骤3:集成Mybatis Generator(这里不使用这种方式,使用更为简洁的方式)
这里的generateConfig.xml文件和SpringBoot官方提供的文件相似,需要注意的是这里使用Mybatis3Simple生成mapper的文件,这中方式比较简洁。
这里使用一个插件MyMapper来做的。
这里是数据库配置信息。
生成pojo的包在如下图进行配置。
生成mapper的包在如下图进行配置。
映射类放置在如图中的位置。
最后设置逆向生成table的名字放置在如图,一般这个名称设置为数据库中对应的表名,这样运行程序时,就会自动逆向生成。
这里使用如图下的类,来逆向生成,这里需要指定逆向生成的文件,在根目录下的generateConfig.xml,运行图中的主方法就会反序列化生成。
启动:它首先会找到那张表,再找到表中的字段,再逆向生成实体类,和mapper文件。
如图:逆向生成的实体类,实体类中的注释就是数据库中的注释。
步骤4:application.properties配置,其中mybatis的pojo类定义在tk.mybatis.springboot.model下,mapper文件在mapper文件夹下。还有通用Mapper配置,它是一个有效类,并且可以设置它的方言。这里还涉及分页的配置,分页使用的方言也是mysql
如果是application.yml配置就是用如下配置
步骤5:配置数据源
二、实现基于mybatis的CRUD功能。
三、整合mybatis-pagehelper实现分页。
四、自定义mapper的实现。
github地址:第一个是课程项目源码,第二个是Mybatis整合SpringBoot的框架。
查看全部 -
thymeleaf常用标签的使用方法
渲染概念:根据标签里设置的属性进行页面的显示(例如input标签的value就可以进行显示文字)。
一、基本使用方式:标签里使用th:text="${}",这种形式可以获取到后端传过来的数据,其中th:后面可以是标签里的属性,像th:id,th:name,th:value等。
二、对象引用类型:不使用对象.属性这种方式,外边嵌套一层div,然后th:object="${传过来的对象名}",然后$符号替换成*号即可。
三、时间类型转换:默认是Date类型显示,可以通过在#dates.format(传过来的日期参数,日期的格式)。如图
四、text与utext的比较:如果th:后面是text,那么它会把传过来的内容原样的显示出来。而utext它会解析这个数据如果是html里的样式及标签,则自动转换成相应样式。
五、URL的方式:thymeleaf的url方式,th:href="@{地址}",它也支持普通的方式。如图
六、引入静态资源文件js/css:thymeleaf要引入静态文件,需要在application.properties中进行设置。如图,也就是说该项目如果使用静态文件会到static中去找。
如下图方式进行引入和url的方式相差不多
thymeleaf支持的form表单绑定url形式,如图,其中th:field可以自动解析为id=“”,name=“”,value=“”,不推荐使用,可读性不好,普通的方式也支持。
七、条件判断th:if——》和el表达式使用相同,大于gt,大于等于ge,小于lt,小于等于le,如果条件不满足则该标签不起作用。
判断的常用使用场景:列表标签,默认的选择和eq比较相等的。如图,eq写在外面也可以。
八、th:unless与th:if——》与if作用相反的。
九、th:switch与th:case——》#{roles.manager}相当于资源文件的使用,前提是进行资源文件的配置
十、th:each——》循环的作用,userList为传过来的集合,而person相当于jstl中的每一个变量。
查看全部 -
新建的包必须在父级包的目录下面,比如:父级:com.example.demo 新建一个controller包:com.example.demo.controller 否则不能查找。
ObjectMapper类是Jackson库的主要类。它提供一些功能将转换成Java对象匹配JSON结构,反之亦然。它使用JsonParser和JsonGenerator的实例实现JSON实际的读/写。
查看全部 -
SpringBoot整合模板引擎freemarker
使用模板引擎的原因:早前使用struts2、springmvc,使用的都是jsp,jsp本质就是一个servlet,jsp里面的数据需要在后端进行处理渲染,然后最后在客户端显示给用户,这个过程是比较耗时的。
模板引擎:它很多的渲染都是在客户端完成的,所以它的效率要比jsp强大很多,并且Spring目前主推模板引擎thymeleaf,它的后缀也是html。
步骤1:pom文件中导入freemarker依赖。
步骤2:application.properties配置freemarker的一些属性(freemarker文件是以ftl为后缀的)。
扩展:SpringBoot中的ModelMap相当于SpringMVC中的ModelAndView,可以往前端传值。
查看全部 -
SpringBoot(1.5.8版本为主,稳定)的一个Demo
官方地址生成项目:https://start.spring.io
Spring官方网址:https://spring.io
STS(全称Spring Tools Suite,IDE):Spring官网基于eclipse做的二次开发,或者在eclipse中导入STS插件也可以。
通过如下方式,就会下载SpringBoot项目的jar包,然后就可以通过eclipseIDE进行import了。
SpringBOOT的jar包就是通过它引入的,可以通过control+鼠标右键进入,可以看到引入jar包和一些配置文件。
如下是格式的配置,包括字符集和java版本
项目的启动入口
SpringBoot配置可以在resource下的application.properties配置。
SpringBOOT中@Controller、@RestController、@RequestMapping注解的使用:
@Controller通常与模板引擎配合使用——直接使用会报错,常用模板引擎有Freemarker、Jsp、Velocity、Groovy、Thymeleaf(SpringBoot推荐使用),所以使用@Controller,需要在Maven的pom文件中引入相应模板引擎的依赖。
@RestController:原来返回json需要@Response和@Controller进行组合,@RestController是它们的组合,一样的作用。
@RequestMapping:可以使用在类上,也可以使用在方法上,类上对所有方法起作用,方法上起补充说明作用。
查看全部 -
配置文件查看全部
-
SpringBoot配置全局的异常捕获
配置异常捕获的原因:自带的异常机制返回的页面相对来说,不是很人性化,对于用户来说,抛出一个异常,可读性差,像500或者404。
首先需要创建一个异常捕获类,在该类上添加@ControllerAdvice,并且需要实现errorHandler这个方法,该方法有三个参数分别为HttpServletRequest、HttpServletResponse、捕获的异常Exception,该方法上需要添加@ExceptionHandler这个注解,然后就可以在这个方法中对该异常进行处理 了,如图,它是先在后台打印该异常,并且返回一个ModelAndView,把e的内容放入,以及放入放生错误的地址,然后再放入了一个错误页面,该页面是自己定义的,而不是SpringBoot自带的页面,该页面也是需要进行配置的。
1、页面跳转形式:
2、ajax形式:ajax捕获异常:
3、对以上两种进行集成,统一返回异常的形式:
查看全部 -
SpringBoot资源文件属性配置
场景1——》资源文件中的属性配置与映射到实体类(然后就可以把这个实体类注入到Controller或Service里)
步骤1:pom文件中,引入configuration-processor依赖,完成资源文件的读取(属性name值为imooc,依次对应)。
步骤2:类上添加@Configuration注解,代表该类会引用资源文件、@ConfigurationProperties用来配置配置文件中的前缀的、@PropertySource代表资源文件的位置、如图
扩展1:classpath,项目打成war包后,只有WEB-INF、WETA-INF这两个包,而WEB-INF只有classes和lib这两个包,lib放置jar包,classes存放的是都是自己新创建的文件。
扩展2:BeanUtils的copyProperties(source,target)——》可以将source对象中属性值赋值给target属性,)前提这两个属性名相同,这两个对象可以是两个类的,也可以是一个类的。
扩展3:解决重启时,报端口占用问题
cmd模式下输入命令:
netstat -ano|findstr 8080,查看占用端口号的进程。
tasklist|findstr "端口号对应数字"结束进程。
taskkill /pid 进程号 -f查看是否成功
断点调试:打断点,可查看执行,F6向下执行,F8将方法返回结果在浏览器上进行显示。
查看全部 -
STS中去除无用包 ctrl+shift+o查看全部
-
Springboot的全局异常捕获
页面跳转形式
@ControllerAdvice:声明处理异常的类
@ExceptionHandler:声明处理异常的方法,value的值表示异常的类型
使用modelAndview进行页面数据的返回
注意,当发生异常时,不会跳转到到controller中的指定页面,而是在异常处理类中指定的跳转页面,即viewName属性的值
查看全部 -
//扫描包路径
@MapperScan(basePackages="包名")
//扫描所有需要的包,包含一些自用的工具类包所在的路径,组件扫描
@ComponentScan(basePackages={"包名1", "包名2"})
id生成器
org.n3r.idworker org.n3r.idworker.strategy org.n3r.idworker.utils
查看全部 -
SpringBoot 整合mybatis
网址1:https://github.com/eechenxiang/imooc-springboot-starter
网址2:https://github.com/abel533/MyBatis-Spring-Boot
查看全部 -
SpringBoot中使用拦截器
1、SpringBoot拦截器的使用
① 使用注解@Configuration配置拦截器
② 继承WebMvcConfigurerAdapter
③ 重写addInterceptors添加需要的拦截器地址
2、实现HandlerInterceptor的拦截器
查看全部 -
2、 SpringBoot整合thymeleaf
①添加依赖:
②添加配置:
③在resources/templates下创建Thymeleaf静态页面(html格式文件)
④添加Controller,在Controller中可以通过ModeMap传递数据
查看全部
举报