
框架
林浩-豪享码
这个作者很懒,什么都没留下…
展开
-
07- Mybatis 的动态 SQL 语句
文章参考:https://blog.youkuaiyun.com/a1092882580/article/details/104152566Mybatis 的动态 SQL 语句MyBatis 的强大特性之一便是它的动态 SQL。如果你有使用 JDBC 或其它类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句的痛苦。例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表最后一个列名的逗号。利用动态 SQL 这一特性可以彻底摆脱这种痛苦。if 标签的使用如果这个时候我们有一个需求,就是根据传入的实体类,原创 2020-06-26 09:54:21 · 191 阅读 · 0 评论 -
05-Mybatis 配置文件标签讲解
文章参考:https://blog.youkuaiyun.com/a1092882580/article/details/1040923191、properties 标签在配置数据库连接的时候,我们可以采用以下几种方式来配置:第一种,采用全局的内部配置。采用这种方式的话,如果需要配置多个数据库环境,那么像 username、password 等属性就可以复用,提高开发效率。<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configu原创 2020-06-25 22:09:37 · 143 阅读 · 0 评论 -
06-Mybatis 连接池简单介绍
文章参考:https://blog.youkuaiyun.com/a1092882580/article/details/104152566在 Mybatis 中,数据源 dataSource 共有三类,分别是:UNPOOLED : 不使用连接池的数据源。采用传统的 javax.sql.DataSource 规范中的连接池,Mybatis 中有针对规范的实现POOLED : 使用连接池的数据源。采用池的思想JNDI : 使用 JNDI 实现的数据源,采用服务器提供的 JNDI 技术实现,来获取 DataSou原创 2020-06-26 08:33:28 · 193 阅读 · 0 评论 -
Mybatis-实现Dao接口方式(一般不用此方式)案例、查看接口调用的哪个实现类方法、查看源码方法
实现Dao接口方式案例项目结构实体类public class User implements Serializable { private Integer id; private String username; private Date birthday; private String sex; private String address; //getter、setter } I原创 2020-06-25 15:13:13 · 415 阅读 · 0 评论 -
03-自定义 Mybatis 框架
先看下Mybatis框架做了哪些事思路分析 Mybatis 在使用代理 Mapper 的方式实现增删查改的时候只做了以下两件事 创建代理对象 在代理对象中调用 selectList在基础代码上作以下修改,工程目录如下去掉mybatis依赖,添加其它工具依赖<dependencies> <!-- 数据库驱动 --> <dependency> <groupId>mysql<原创 2020-06-24 16:44:19 · 132 阅读 · 0 评论 -
02 - Mabatis基于注解开发例子
基于注解开发,在Mybatis基于xml配置例子代码上修改以下几点即可删除接口映射文件(IUserDao.xml)IUserDao接口改为package com.zz.dao;import com.zz.entity.User;import org.apache.ibatis.annotations.Select;import java.util.List;public interface IUserDao { /** * 查询所有用户 */ @Sel原创 2020-06-23 15:54:28 · 131 阅读 · 0 评论 -
01 - Mybatis介绍、Mybatis基于xml配置例子
Mybatis 的概述Mybatis 是一个使用java编写的持久层框架。它封装了 JDBC ,使开发者只需要关注 sql 语句,而无需关注注册驱动、创建连接、创建 Statement 等繁杂的过程。采用了 ORM 思想 实现了结果集的封装ORM(Object Relational Mapping)对象关系映射。简单地说,就是把数据库表和实体类及实体类的属性对应起来,让我们可以通过操作实体类来操作数据库表。项目结构pom<?xml version="1.0" encoding=.原创 2020-06-23 15:41:37 · 296 阅读 · 0 评论 -
SpringMVC - 知识点导航
原创 2020-06-19 08:49:45 · 168 阅读 · 0 评论 -
SpringMVC - 拦截器
拦截器Interceptor 的作用Spring MVC 的处理器拦截器类似于 Servlet 开发中的过滤器 Filter,用于对处理器进行预处理和后处理。用户可以自己定义一些拦截器来实现特定的功能。谈到拦截器,还要向大家提一个词——拦截器链(Interceptor Chain)。拦截器链就是将拦截 器按一定的顺序联结成一条链。在访问被拦截的方法或字段时,拦截器链中的拦截器就会按其之前定义的顺序被调用。过滤器和拦截器区别:过滤器是 servlet 规范中的一部分,任何 java web 工程都可以使原创 2020-06-19 08:24:47 · 227 阅读 · 0 评论 -
SpringMVC-异常处理
异常处理思路系统的dao、service、controller出现异常都通过throws Exception向上抛出,最后由springmvc前端控制器交由异常处理器进行异常处理。springmvc提供全局异常处理器(一个系统只有一个异常处理器)进行统一异常处理。明白了springmvc 中的异常处理机制,下面就开始分析springmvc中的异常处理。异常处理结构体系Spring MVC通过HandlerExceptionResolver处理程序的异常,包括处理映射,数据绑定及 处理器执行时发生异常。原创 2020-06-18 23:20:26 · 280 阅读 · 0 评论 -
SpringMVC - 返回值类型 - String(转发、重定向)、void、ModelAndView、@ResponseBody返回json格式
返回值分类1、字符串controller 方法返回字符串可以指定逻辑视图名,通过视图解析器解析为物理视图地址。Croller代码:@RequestMapping("/testReturnString") public String testReturnString() { System.out.println("AccountController的testReturnString 方法执行 了。。。。"); return "success"; }运行结果:跳转到succe原创 2020-06-16 15:55:32 · 3735 阅读 · 0 评论 -
SpringMVC-SessionAttribute注解
使用说明作用: 用于多次执行控制器方法间的参数共享。属性: value:用于指定存入的属性名称 type:用于指定存入的数据类型使用示例jsp中的代码:<!-- SessionAttribute 注解的使用 --><a href="springmvc/testPut">存入 SessionAttribute</a> <hr/><a href="springmvc/testGet">取出 SessionAttribute</原创 2020-06-16 09:43:02 · 254 阅读 · 0 评论 -
SpringMVC-ModelAttribute注解
使用说明作用: 该注解是 SpringMVC4.3 版本以后新加入的。它可以用于修饰方法和参 数。 出现在方法上,表示当前方法会在控制器的方法执行之前,先执行。它可 以修饰没有返回值的方法,也可以修饰有具体返回值的方法。出现在参数上, 获取指定的数据给参数赋值。属性: value:用于获取数据的 key。key 可以是 POJO 的属性名称,也可以是 map 结构的 key。应用场景: 当表单提交数据不是完整的实体类数据时,保证没有提交数据的字 段使用数据库对象原来的数据。例如: 我们在编辑一个用原创 2020-06-16 09:30:27 · 219 阅读 · 0 评论 -
SpringMVC-CookieValue注解
使用说明作用: 用于把指定 cookie 名称的值传入控制器方法参数。属性: value:指定 cookie 的名称。 required:是否必须有此 cookie。使用示例jsp中代码:<!-- CookieValue 注解 --><a href="springmvc/useCookieValue">绑定 cookie 的值</a>控制器中的代码: @RequestMapping("/useCookieValue") public S原创 2020-06-15 17:14:03 · 307 阅读 · 0 评论 -
SpringMVC-RequestHeader注解
使用说明作用: 用于获取请求消息头。属性: value:提供消息头名称 required:是否必须有此消息头注:在实际开发中一般不怎么用。使用示例jsp<!-- RequestHeader 注解 --><a href="account/useRequestHeader">获取请求消息头</a>Controller /** * RequestHeader 注解 * @return */ @RequestMa原创 2020-06-15 16:00:06 · 506 阅读 · 0 评论 -
SpringMVC-基于 HiddentHttpMethodFilter 的示例
作用: 由于浏览器 form 表单只支持 GET 与 POST 请求,而 DELETE、PUT 等 method 并不支持,Spring3.0 添加了一个过滤器,可以将浏览器请求改为指定的请求方式,发送给我们的控制器方法,使得支持 GET、POST、PUT 与 DELETE 请求。使用方法: 第一步:在 web.xml 中配置该过滤器。 第二步:请求方式必须使用post 请求。 第三步:按照要求提供_method 请求参数,该参数的取值就是我们需要的请求方式。示例:web.xml配置过滤器 .原创 2020-06-15 15:46:27 · 156 阅读 · 0 评论 -
SpringMVC-PathVaribale注解
使用说明作用: 用于绑定 url 中的占位符。例如:请求 url 中 /delete/{id},这个{id}就是 url占位符。 url 支持占位符是 spring3.0 之后加入的。是 springmvc 支持 rest 风格URL 的一个重要标志。属性: value:用于指定 url 中占位符名称。 required:是否必须提供占位符。使用示例jsp代码:<!-- PathVariable 注解 --><a href="account/usePathVariable/原创 2020-06-15 14:55:27 · 326 阅读 · 0 评论 -
SpringMVC-RequestBody注解
使用说明作用: 用于获取请求体内容。直接使用得到是 key=value&key=value…结构的数据。 get 请求方式不适用。属性: required:是否必须有请求体。默认值是:true。当取值为 true 时,get 请求方式会报错。如果取值为 false,get 请求得到是 null。使用示例post 请求 jsp 代码:<!-- request body 注解 --><form action="account/useRequestBody" method原创 2020-06-15 14:43:13 · 242 阅读 · 0 评论 -
SpringMVC-RequestParam 注解
使用说明作用: 把请求中指定名称的参数给控制器中的形参赋值(如果没有此注解,就必须保证前后端的参数名称一致,才能采用反射技术自封装)。属性: value:请求参数中的名称。 required:请求参数中是否必须提供此参数。默认值:true。表示必须提供,如果不提供将报错。也可以使用defaultValue指定默认值(表示如果不传此参数就采用默认值)使用示例jsp:<!-- requestParams 注解的使用 --><a href="springmvc/useReques原创 2020-06-15 13:05:19 · 287 阅读 · 0 评论 -
SpringMVC-RequestMapping 注解
使用说明源码: @Target({ElementType.METHOD, ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented @Mapping public @interface RequestMapping { }作用: 用于建立请求 URL 和处理请求方法之间的对应关系。出现位置:类上:请求 URL 的第一级访问目录。此处不写的话,就相当于应用的根目录。写的话需要以/原创 2020-06-15 12:51:09 · 169 阅读 · 0 评论 -
获取文件路劲
原创 2020-06-15 12:14:57 · 133 阅读 · 0 评论 -
设置跳转到欢迎页面
SpringMVC的web项目默认会跳转到index.jsp。该页面是没有经过服务器内部跳转。当我们想要项目已启动就跳转到一个自己写的页面,需要设置欢迎页面。步骤:在index.jsp同层级,也就是webapp目录下写一个(account.jsp)页面,因为WEB-INF目录下的页面是通过服务器内部跳转的在web.xml中配置: <welcome-file-list> <welcome-file>account.jsp</welcome-file&.原创 2020-06-15 11:37:51 · 620 阅读 · 0 评论 -
自定义类型转换器
使用场景jsp代码:<a href="account/deleteAccount?date=2018-01-01">根据日期删除账户</a>控制器代码:@RequestMapping("/deleteAccount") public String deleteAccount(String date) { System.out.println("删除了账户。。。。"+date); return "success"; }当我们把控制器中方法参数的类型改为 Da原创 2020-06-12 17:22:24 · 444 阅读 · 0 评论 -
静态资源过滤问题
在 springmvc 的配置文件中可以配置,静态资源不过滤:<!-- location 表示路径,mapping 表示文件,**表示该目录下的文件以及子目录的 文件 --><mvc:resources location="/css/" mapping="/css/**"/> <mvc:resources location="/images/" mapping="/images/**"/> <mvc:resources location="/scripts/原创 2020-06-12 17:14:14 · 1246 阅读 · 0 评论 -
请求参数乱码问题
post 请求方式: 在 web.xml 中配置一个过滤器<!-- 配置 springMVC 编码过滤器 --> <filter> <filter-name>CharacterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <原创 2020-06-12 17:12:31 · 139 阅读 · 0 评论 -
SpringMVC请求参数绑定
绑定的机制SpringMVC 绑定请求参数的过程是通过把表单提交请求参数,作为控制器中方法参数进行绑定的。 例如:<a href="account/findAccount?accountId=10">查询账户</a>中请求参数是:accountId=10Controller实现:@RequestMapping("/findAccount") public String findAccount(Integer accountId) { System.out.pri原创 2020-06-12 17:07:30 · 118 阅读 · 0 评论 -
SpringMVC 搭建maven的web项目、执行过程及原理分析
该框架为学习刘先森课程所得idea搭建maven的web项目工程目录结构创建一个maven工程并导入依赖<dependencies> <dependency> <!-- Junit测试 --> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12&l原创 2020-06-12 12:04:44 · 647 阅读 · 0 评论 -
SpringMVC 概述
该框架为学习刘先森课程所得SpringMVC 是什么SpringMVC 是一种基于 Java 的实现 MVC 设计模型的请求驱动类型的轻量级 Web 框架,属于 Spring FrameWork 的后续产品,已经融合在 Spring Web Flow 里面。Spring框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用 Spring进行 WEB 开发时,可以选择使用 Spring的 Spring MVC 框架或集成其他 MVC 开发框架,如原创 2020-06-12 11:22:18 · 164 阅读 · 0 评论 -
SpringMVC - 三层架构和 MVC
该框架为学习刘先森课程所得三层架构:表现层、业务层、持久层我们的开发架构一般都是基于两种形式,一种是 C/S 架构,也就是客户端/服务器,另一种是 B/S 架构,也就是浏览器服务器。在 JavaEE 开发中,几乎全都是基于 B/S架构的开发。那么在 B/S 架构中,系统标准的三层架构.包括:表现层、业务层、持久层。三层架构在我们的实际开发中使用的非常多,所以我们课程中的案例也都是基于三层架构设计的。三层架构中,每一层各司其职,接下来我们就说说每层都负责哪些方面:表现层: 也就是我们常说的web层。它原创 2020-06-12 11:11:39 · 1272 阅读 · 0 评论 -
Hibernate - 二级缓存
第一步:ehcache.xml中部分配置信息://当缓存满了,存放到硬盘的临时位置,path只硬盘路径<diskStore path="java.io.tmpdir"/>//缓存以对象为单位,最多存放10000个maxElementsInMemory="10000"eternal="false"//2分钟内没人访问,就会从缓存中清除掉timeToIdleSeconds="120"timeToLiveSeconds="120"//true表示缓存满了,保存到硬盘overf.原创 2020-06-11 11:54:31 · 203 阅读 · 0 评论 -
Hibernate - session一级缓存
看下面例子,就很快明白了连续查询两次public void testLoad(){ Session session =null; try{ session = HibernateUtil.getSession(); session.beginTransaction(); Student s = (Student)session.load(Student.class, 1); System.out.println("1.student Name:"+s.getNa原创 2020-06-11 10:35:02 · 140 阅读 · 0 评论 -
Hibernate-查询机制
只查询部分字段,比如列出姓名跟年龄叫投影update、delete、insert不支持缓存的,所以一般情况下不要用原创 2020-06-11 10:00:07 · 163 阅读 · 0 评论 -
Hibernate-多对多ManyToMany
例子:学生与课程之间多对多关系如果想要知道学生选了哪些课,需要在学生类配置ManyToMany,如果想要知道该课程有哪些学生,需要在课程类配置ManyToMany如果以上两种都需要,则在两边都得配置ManyToMany无论哪一种配置,表结构都一样(都有中间表自动生成),只是表之间关系在对表操作时有限制(比如只在学生类配置了ManyToMany,则无法通过课程查询学生),表结构如下:单边配置ManyToMany,如下:Student.javapublic class原创 2020-06-10 15:17:11 · 439 阅读 · 0 评论 -
Hibernate-一对多OneToMany
例子:一个班级对应多个学生一对多:一的一方用se接口集合,不能用HashSet,因为Hibernate有自己的set实现。set与list区别:set无序,set不重复班级表:public class Clazz { private int id; private String name; private Set<Student> students; //get、set省略 } Clazz.hbm.xml学生表:p原创 2020-06-10 11:14:51 · 926 阅读 · 0 评论 -
Hibernate - 多对一、级联
例子:学生与班级是多对一关系Student.javapublic class Student { private int id; private String name; private double score; private Clazz clazz; //get、set省略} Student.hbm.xml<hibernate-mapping> <class name="entity.Student"> <id n.原创 2020-06-09 11:23:06 · 188 阅读 · 0 评论 -
Hibernate-增删改查项目中的使用及注意点
本来在main测试中,需要用到SchemaExport才能建表,项目中只要在配置中添加hbm2ddl.auto属性,自动会建表public static void main(String[] args) { //读取配置文件:如果直接创建读取文件,没有再点configure()方法,读取的是hibernate2.0的配置文件 Configuration cfg = new Configuration().configure(); //建表:(Schema:方案),将配置文件输出 .原创 2020-06-09 10:18:05 · 197 阅读 · 0 评论 -
Hibernate - get与load方法
先看下load方法的执行结果结果:执行91行时输出Hibernate语句以及类名get与load区别:get:不支持延迟加载,执行get方法时,就去数据库查询返回的是Student类型如果查询对象不存在会返回null,这样很难查询错误原因,后面很可能会报空指针异常。load:延迟加载(懒加载),只有要到了才会去数据库查询,节省开销,Hibernate建议用load执行load语句返回的不是Student类型,而是Student的一个子类,他是一个代理对象,EnhancerBy.原创 2020-06-09 08:36:00 · 149 阅读 · 0 评论 -
Hibernate - 持久化对象的生命周期:Hibernate对象下的三种状态
由于构造SessionFactionry很消耗资源,整个应用只创建一个会话工厂,但打开数据库连接Session会话是多次的,所以可以写个工具类。工具类:import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;public class HibernateUtil { private static SessionFactory factory;原创 2020-06-08 12:07:07 · 205 阅读 · 0 评论 -
Hibernate -主键映射
public class Student { private String id; private String name; private double score; //get、set省略 }数据库:主键16个字符,16位,128个字节uuid具体生成策略:原创 2020-06-08 11:01:47 · 143 阅读 · 0 评论 -
Hibernate -基本映射
MySQL数据库:原创 2020-06-08 10:17:35 · 122 阅读 · 0 评论