MyBatis(三) MyBatis的多表查询和注解操作
1. Mybatis多表查询1.1 一对一查询 一对一查询的模型 用户表和订单表的关系为,一个用户有多个订单,一个订单只从属于一个用户 一对一查询的需求:查询一个订单,与此同时查询出该订单所属的用户 orders user id:int id:int ordertime:varchar(255) username:varchar(50) total:double password:varchar(50) uid:int birthday:varchar(50) 一对一查询的语句 对应的sql语句:select * from orders o,user u where o.uid=u.id 创建Order和User实体 1234567public class Order { private int id; private Date ordertime; private double total; //代表当前订单从属于哪一个客户 private User user;} 123456public...
MyBatis(二) Dao层实现以及映射文件和配置文件
1. MyBatis的Dao层实现1.1 传统开发方式 编写UserDao接口 123public interface UserDao { List<User> findAll() throws IOException;} 编写UserDaoImpl实现 12345678910public class UserDaoImpl implements UserDao { public List<User> findAll() throws IOException { InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml"); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream); SqlSession sqlSession =...
MyBatis(一) 入门操作
1. Mybatis简介1.1 原始jdbc操作插入数据查询数据1234567891011121314151617181920//模拟实体对象User user = new User();user.setId(2);user.setUsername("tom");user.setPassword("lucy"); .//注册驱动Class.forName("com.mysql.jdbc.Driver");//获得连接Connection connection = DriverManager.getConnection("jdbc:mysql:///test","root","root" );//获得statementPreparedStatement statement = connection.prepareStatement("insert into user(id,username , password)...
Spring(五) JdbcTemplate基本使用与事务控制
1. Spring JdbcTemplate基本使用1.1 JdbcTemplate概述它是spring框架中提供的一个对象,是对原始繁琐的Jdbc API对象的简单封装。spring框架为我们提供了很多的操作模板类 例如:操作关系型数据的JdbcTemplate和HibernateTemplate,操作nosql数据库的RedisTemplate操 作消息队列的JmsTemplate等等。 1.2 JdbcTemplate开发步骤/快速入门1.2.1 导入spring-jdbc和spring-tx坐标12345678910<dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>5.3.15</version></dependency><dependency> ...
Spring(四) 面向切面编程AOP
1. Spring 的 AOP 简介1.1 什么是 AOPAOP 为 Aspect Oriented Programming 的缩写,意思为面向切面编程,是通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术 AOP 是 OOP 的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍 生范型。 利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率 在应用 AOP 编程时,仍然需要定义公共功能,但可以明确的定义这个功能在哪里,以什么方式应用,并且不必修改受影响的类, 这样一来横切关注点就被模块化到特殊的对象(切面)里 1.2 AOP 的作用及其优势 作用:在程序运行期间,在不修改源码的情况下对方法进行功能增强 优势:每个切面位于一个位置,代码不分散, 减少重复代码,提高开发效率,并且便于维护和升级,业务模块更简洁, 只包含核心业务代码 1.3 AOP 的底层实现实际上,AOP 的底层是通过 Spring...
Spring(三) IOC和DI注解开发
1. Spring配置数据源1.1 数据源(连接池)的作用 数据源(连接池)是提高程序性能如出现的 事先实例化数据源,初始化部分连接资源 使用连接资源时从数据源中获取 使用完毕后将连接资源归还给数据源 常见的数据源(连接池):DBCP、C3P0、BoneCP、Druid等 1.2 数据源的开发步骤 导入数据源的坐标和数据库驱动坐标 创建数据源对象 设置数据源的基本连接数据 使用数据源获取连接资源和归还连接资源 1.3 数据源的手动创建 导入c3p0和druid的坐标以及导入mysql数据库驱动坐标 1234567891011121314151617181920 <!-- C3P0连接池 --> <dependency> <groupId>c3p0</groupId> <artifactId>c3p0</artifactId> <version>0.9.1.2</version> ...
Spring(二) IOC和DI
1. IOC和DI的基本概念1.1 IOC(Inversion of Control 控制反转): 其思想是反转资源获取的方向。传统的资源查找方式要求组件向容器发起请求查找资源,作为回应,容器适时的返回资源。 而应用了 IOC 之后,则是容器主动地将资源推送给它所管理的组件,组件所要做的仅是选择一种合适的方式来接受资源。 这种行为也被称为查找的被动形式。这体现的是一种设计思想,而不是具体的实现。 1.2 DI(Dependency Injection 依赖注入) — IOC 的另一种表达方式 组件以一些预先定义好的方式(例如: setter 方法)接受来自于容器的资源注入。 DI是实现了IOC设计思想的具体行为,spring容器就是通过DI来实现了IOC的设计思想。 依赖注入的目的并不是给应用程序带来更多的功能,而是为了提升组件的重用频率,并为系统搭建一个灵活、可扩展的平台。通过依赖注入机制,我们只要通过简单的配置就可指定目标需要的资源,完成自身的业务逻辑,而不需要关心具体的资源来自何处,由谁实现。 2. Spring配置文件2.1...
Spring(一) Spring的入门概念
1. Spring简介1.1 Spring是什么Spring是分层的 Java SE/EE应用 full-stack 轻量级开源框架,以 IOC(Inverse Of Control:反转控制)和 AOP(Aspect Oriented Programming:面向切面编程)为内核。 提供了展现层 SpringMVC 和持久层 Spring JDBCTemplate 以及业务层事务管理等众多的企业级应用技术 ,还能整合开源世界众多著名的第三方框架和类库,逐渐成为使用最多的Java EE 企业应用开源框架 1.2 Spring的优势 方便解耦,简化开发 通过 Spring 提供的 IoC容器,可以将对象间的依赖关系交由 Spring 进行控制,避免硬编码所造成的过度耦合。 用户也不必再为单例模式类、属性文件解析等这些很底层的需求编写代码,可以更专注于上层的应用。 AOP 编程的支持 通过 Spring的 AOP 功能,方便进行面向切面编程,许多不容易用传统 OOP 实现的功能可以通过 AOP...
blog美化记录
第一次优化添加emoji表情支持(可选的)代码高亮搜索中文链接转拼音(可选的)文章字数统计插件 (可选的)1. 添加emoji表情支持(可选的)本主题新增了对emoji表情的支持,使用到了 hexo-filter-github-emojis 的 Hexo 插件来支持 emoji表情的生成,把对应的markdown emoji语法(::,例如:😄)转变成会跳跃的emoji表情 安装命令如下: 1npm install hexo-filter-github-emojis --save 在 Hexo 根目录下的 _config.yml 文件中,新增以下的配置项: 123456githubEmojis: enable: true className: github-emoji inject: true styles: customEmojis: 执行 hexo clean && hexo g 重新生成博客文件,然后就可以在文章中对应位置看到你用emoji语法写的表情了。2. 代码高亮由于 Hexo 自带的代码高亮主题显示不好看,所以主题中使用到了...
JavaEE中上传图片的方式
HTML页面1.要有一个form标签,method=post请求,以及在form标签中使用input type=file添加上传文件 因为传输的带有图片文件 数据会很大 get请求用容量限制 post没有 所以如果需要传输文件就要用post请求 2.form标签的encType属性必须为multipart/form-data 在http协议中 请求头中有这样一个信息 Content-Type: multipart/form-data; boundary=—-WebKitFormBoundarysrd39rxk51BB2BtB Content-Type表示提交的数据类型而encType=multipart/form-data表示提交的数据,以多段(每一个表单项一个数据段)的形式进行拼接,然后以二进制流的形式发送给服务器boundary 表示每段数据的分隔符 表示数据的开始 每次都由浏览器随机生成 结束会再生成一个多了两个-的分隔符 导入jar包导入conmons-fileupload.jar 而 这个jar包又依赖于 conmmons-io.jar ...