栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java分布式应用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java分布式应用

单点服务器技术 Java&数据库操作 JDBC

Java DataBase Connection:是java语言中唯一一个能够操作数据库的技术。
Java本身由于扩展性的考虑,没有对任何数据库的操作做出具体实现。真正实现具体数据库操作的数据
库厂商提供的jar包类库。

Mybatis

Mybatis是目前占有率最高的ORM框架之一,主要用来编写数据访问层(dao层), 代替了JDBC, 简化了数
据访问操作,其他常用ORM框架还有Hibernate和JPA。
Mybatis早期叫做Ibatis,常用的版本是3.x系列

Mybatis核心配置文件

Mybatis的核心配置文件 名称任意、位置任意,一般情况下我们会将配置文件放到类路径下,并且名字
叫做mybatis-config.xml

 
 
 
 
 
 
 
  
 
 
  
 
 
 
 
 
 
 
 
  
 
 
 
 
 
 
 
 

Mybatis映射文件

Mapper.xml 通过
namespace属性找到与之对应的Mapper接口
Mapper.xml 通过进行增删改查操作,注意: 标签的id必须和与之
对应的道接口的方法名完全一致。

在等标签中通过编写sql语句,嵌入动态的数据,可以实现类似JDBC的操作
嵌入动态语句的两种方式:
#{} : 相当于JDBC中的预编译语句的?占位符,引用的是对象的属性值
${}: 插值,相当于字符串拼接

ResultMap

结果集映射,将从数据库查询的内容 和pojo类的属性进行一一映射,mybatis就能对查询结果自动赋值


    
    
    
    
    
  

在等标签中 可以通过 resultMap=“resultMapId” 来使用结果集映射

mybatis返回值的几种情况: resultMap:

代表使用一个已经定义好了的结果集映射

resultType: 共有3中情况:

1、返回一个单一类型,例如 查询公司中一共有多少个部门。


   SELECT COUNT(dept_id) FROM dept


2、返回一个组合类型,例如返回pojo类的情况


 
   SELECT dept_loc, COUNT(*)
   FROM dept
   GROUP BY dept_loc
  

paramenterType的几种情况:

1、传入一个单一类型:例如传入删除部门的ID
写不写paramenterType #{}中写具体哪个参数 不限制
2、传入一个组合类型: 例如增加部门
#{} 此时代表的是 传入的pojo类的属性
3、传入一个松散的结构: Map集合
#{}此时代表的时 传入的map中的key

List queryById(HashMap map);

如果希望方法能通同时传入多个参数,那么可以通过@Param注解给接口的方法

List queryById(@Param("start")Integer start , 
@Param("end")Integer end);


动态Sql语句

根据Mybatis提供的标签,实现根据条件修改SQL语句

动态sql语句相关标签

if标签: 通过判断结果,决定sql语句是否加入执行语句中,注意此语法不支持else
choose& when & otherwise:等价于if else if else
where标签:动态判断是否添加where关键字(剪裁and关键字)

MyBatis的缓存

一级缓存
sqlSession级别缓存,在同一个sqlSession中进行2次完全相同的查询操作(2次查询中间没有DML操
作),在第一次查询执行完毕,会将查询结果存储到缓存中(localCache),第二次查询会直接从缓存中获取
数据,不会访问数据库,从而提高查询效率。
一级缓存声明周期
当Mybatis开启一个session时,会同步创建一个Executor,这个对象中包含一个属性
PerpetualCache,用于存储一级缓存内容
当session被close,会自动释放一级缓存对象
当session中调用了clearLocalClear()方法,会清空PerpetualCache对象.
当session中执行了人分和DML操作(增删改),会清空PerpetualCache对象.
一级缓存命中判断
Mybatis对于两次查询,如果以下条件完全一致,则认为是两次相同的查询
2次语句的statementId
2次查询的结果范围
2次查询最终传递给JDBC执行的sql语句字符串
2次查询要设置的参数值.

二级缓存

二级缓存是全局范围的缓存



    


  
Spring系列 Spring核心库

Spring是一种胶水框架,主要的功能是用来整合其他框架。
Spring的核心功能 IOC 和 AOP。
Spring的xml配置文件:名称任意、位置任意、数量都是任意,但是一般习惯把配置文件放到类路径
下,并且名字叫做applicationContext.xml
任何类想要接受Spring的管理,必须成为SPring的Bean

SpringBean的声明周期

默认情况下,所有的Bean会在核心容器创建的同时被自动创建,存储在核心容器对象中,只会创建一
次。
可以通过bean标签中的scope属性 设置Bean的单例和多例:
singlton: 单例模式,SProng容器创建的同时自动创建Bean对象,只创建一个
在单例模式下,如果希望Bean不与容器同时创建,而是第一次使用前再创建(懒加载),可
以使用lazy-init=true属性设置
也可以在beans标签中增加 default-lazy-init=“true” 统一懒加载设置
protoType: 多例模式,每次从容器中获得的都是刚创建的新对象(自带懒加载)

IOC 控制反转 Inversion of Control 控制翻转,把项目当中一部分对象的生命周期管理,交给Spring管理,由Spring 容器创建需要依赖的对象. **DI 依赖注入** Spring会自动把创建的对象,依照配置赋值给需要的地方. ### Spring的自动装配和注解配置 Spring可以使用xml文件配置bean和相关注入操作,但是更推荐使用注解进行操作. 注解配置spring的前置条件: 在核心配置文件中 添加注解扫描配置


Spring提供了@Componet注解 和其他语义化的注解用于配置Bean:
@Component: 用于修饰类,代替了bean标签,可以将一个java类配置成SPring的Bean,可以
通过给@Component注解的value属性进行赋值,来设置BeanId,如果不给value赋值,那么默认
会将类名的首字母小写设置为BeanId

@Component("deptDao2")//如果不写括号 这个Bean的id默认是 deptDao
public class DeptDao {

除了Componet注解之外,Spring还提供了3个语义化注解
@Repository:功能与@Component完全相同,代表数据访问层 Dao层
@Serivce:功能与@Component完全相同,代表业务逻辑层 Service层
@Controller:功能与@Component完全相同,代表控制器 Controller层

Spring自动装配

@AutoWired: 用自动装配做依赖注入,按照byType方式(自动查找赋值属性的数据类型,容器中
如果有相同的类型自动赋值)
@Resource: 和@AutoWired的区别是,按照byName方式,@Resource可以传入一个beanId,通
过容器中的BeanId来注入对象

AOP 面向切面编程

AOP是OOP(面向对象编程)的一种补充和延伸。
简单的说,AOP能够把一些增强的功能切入到原始对象的代码中,并且不需要修改原始代码.
原理是产生了一个新的代理对象,当调用这个代理对象的方法的时候,会先调用原始功能,再调用增强
功能。
AOP的原理就是java的动态代理技术
动态代理的实现方式有2种:

  1. JDK动态代理
    2.cglib动态代理
反射

java中,每个数据类型都有一个自己的Class对象,也叫 运行时类,包括基本类型。
运行时类中 存储了类型的相关信息(属性、方法和构造方法)
运行时类会在类加载到JVM的同时自动创建
我们可以通过一个类型的运行时类,动态的操作这个类型的属性方法和构造器

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/830940.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号