-
封装一个RedisOperator操作类
40%
查看全部 -
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-redis</artifactId> </dependency>
application的redis配置,注意:timeout>0
@Autowired StringRedisTemplate
template.opsForValue.set("k1","v1")
template.opsForValue.get("k1")
对象转Json
strNotice = new ObjectMapper().writeValueAsString(notice)
json转对象
Notice notice2=new ObjectMapper().readValue(strNotice2,Notice.class)
60%
查看全部 -
SpringBoot整合持久层事物
1、事物的隔离级别有多种,这里采用默认的形式。
2、事物的传播行为,这里主要使用REQUIRED和SUPPORTS。
REQUIRED:当有一个操作需要执行的时候,如果有事物,就会把当前这个操作放入到事物中,如果没有事物,那么就要新建一个事物,然后再去执行(适用于增加、删除、修改的操作)。
SUPPORTS:如果有事物,就把该操作加入当前事物中执行,如果没有事物,就以脱离事物状态去运行(适合读取操作)。
举例:插入一个用户,之后产生一个除0异常,如图。然后把该用户的删除状态由0修改为1,然后再进行修改。
通过查看:用户是插入进去了,但是没有进行修改,由于这个异常,所以这里需要回滚,所以这里需要使用事物。
这里只需要在执行数据库操作的方法上添加注解@Transactional,并且事物的传播行为REQUIRED,此时就会发现没有进行插入,也就是事物进行了回滚,这也就是事物的作用,要么一组操作全部成功,要不就都失败。
拓展:SpringMVC事物的使用,需要在配置文件进行配置,如下图,针对特定方法的开头单词进行事物的操作。
查看全部 -
整合mybatis-pagehelper实现分页
实现分页的前提:第一个是当前页数,第二个是每页显示多少条记录数,这里设置每页记录数为10条。
PageHelper的startPage(当前页数,每页显示记录数)实现原理:查询时有一个拦截,拦截后对sql语句进行包装(源码如下),也就是每次执行该方法时,都是查询指定数量记录并进行返回。
注意:这里需要注意如果当前页设置为0,会按当前页为第一页来处理,如果传过去的当前页大于最后一页,则会查询最后一页记录并且返回。
查看全部 -
实现CRUD
首先,需要在项目的启动类上添加@MapperScan(baskPackages="包路径"),用来扫描该包下的映射类,也就是让SpringBoot容器加载这些映射类。
代码演示:创建service及其实现类,并且接口中有如下方法。
通过查看userMapper(生成的插件),它其中拥有很多方法。
查看全部 -
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的框架。
查看全部 -
Web异常处理和ajax异常处理结合使用
步骤:只需要在后端进行一个判断,判断该请求是否是ajax请求,如果是那么则以ajax异常方式处理,如果是web形式则以web异常处理形式处理即可。
查看全部 -
@JsonIgnore, 不返回该字段 @JsonFormat(...) 对时间格式进行注解 , @JsonInclude(XXX)
查看全部 -
@RestController= @Controller+ @ResponseBody
查看全部 -
捕获ajax访问时的异常
@RestControllerAdvice:拦截异常并统一处理,它通常用于定义@ExceptionHandler, @InitBinder 和 @ModelAttribute 适用于所有@RequestMapping方法的方法,通过它就可以返回我们期望的异常返回格式,如果全部异常返回格式使用json,就可以使用该注解代替@ExceptionHanlder下的@ResponseBody注解。
@ControllerAdvice:拦截异常并统一处理,它通常用于定义@ExceptionHandler, @InitBinder 和 @ModelAttribute 适用于所有@RequestMapping方法的方法,通过它就可以返回我们期望的异常返回格式,注意:使用它时@ExceptionHandler必须和@ResponseBody一起结合使用。
@ExceptionHandler:自动捕获controller层出现的指定类型异常,并对该异常进行相应的异常处理。
Exception的printStackTrace():打印该异常类名、字符串信息和方法调用到异常抛出的轨迹。
Exception的getMessage():返回异常的字符串信息,也就是异常的构造方法中的参数。如果是自定义异常,需要把字符串需要传给父类的构造器,否则不会输出信息。(除非自己定义这几个方法)
注意:如果是自己定义的异常类(继承了Exception),字符串信息要传给其父类Exception的构造器,否则
这里方法返回一个包装类,通过包装类IMoocJSONResult把异常信息进行返回。
页面中加入debugger;运行的时候相当于产生一个端点,谷歌浏览器下,F10可以继续往下执行,而且可以在右边的watch中输入想要查看的数据。
查看全部 -
mybatis、mapper、pagehelper
查看全部 -
<!--freeMark依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId> </dependency> <!--ModelAndView--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
查看全部 -
server.port=8888
server.context-path="/app/cf"
查看全部 -
@Configuration
@ConfigurationProperties(prefix="com.cf.resouce.config")//配置项的前缀
@PropertySource(value="classpath:resource.properties")//配置文件路径
查看全部 -
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
查看全部
举报