2019年9月24日
服务器的端口号
sql server 1433 mysql 3306 oracle 1522
配置bean 有2中方法
1、传统xml配置
<bean id="a1" class="com.nf.男同学" >
<property name="name" value="小明"></property>
</bean>
<Component_bean id="a1" class="com.nf.男同学" >
<property name="name" value="小明"></property>
</bean>
<respository_bean id="a1" class="com.nf.男同学" >
<property name="name" value="小明"></property>
</bean>
a.编写一个接口文件
b.编写实现类,并实现方法
(如果把第三步删了会报红)
c.在applicationcontext声明一个bean(实现类)
d.在需要的地方添加声明,添加注解@Autowired
private MyComponet componet;
2、注解的方式
设置扫描包+在对应的bean中添加注解 @Component @Respository @Service @Controller【可以不用管】
在bean中配置这三个东西,暂时无所谓,配那个都行,不过要按照官方的规范去写
@Component【其它】 @Respository【dao层】 @Service【service层】
所有东西都可以写为Component,也可以当做为主键
a.编写一个接口文件
b.编写实现类,并实现方法
c.在实现类里添加一个注解 @Component @Respository @Service
d.添加扫描包<context:component-scan base-package="com.nf.service">
te.在需要的地方添加声明,添加注解@Autowired
private MyComponet componet;
bean中的id为a1,假如我如果还想注入aa呢,怎么写?
当你的实现类超过二个并且你的变量名(service层里面的代码:private MyComponent oo;)跟你的实现类的名字(@Service(value="aa"))不相同时,可以通过Qualifier来完成(@Qualifier("aa"))
2019年9月26日
工程:一个整体的代码, 切分成不同地方,相互没有耦合代码段
前端:div+HTML+css+js+MVVM+vue.js+ui框架
后端(分离后,除了更好的管理,还可以并发开发):
1、依赖pom.xml;
2、placeholder等配置信息
3、@RestController(Controller+ResponseBody)
4、Model(MVC--Model层)
5、jsp(MVC--Model层)
6、service层(公司不可替代的私有的游戏规则)
7、dao层(提供数据:数据库的读和写,查询统计,过滤等)
JDBC模板(不需要掌握--->>>不用写JDBC代码)
MyBatis(分离了sql语句)
aop概念的介入+事务的管理
高内聚,低耦合
0耦合 过分理想-->>变复杂--->>得到认可
2019/10/10
原理:jdk代理,cglib代理
MyBatis采用jdk动态代理技术,帮助我们程序员实现该接口,所以我们只需要定义一个接口,而不用写实现类。
1.aop为aspect oriented progranming 的缩写,意为面向对象编程
2.通过预编译方式和运行期动态代理实现程序功能的唯一维护的一种技术
3.核心思想是将业务逻辑中余类不相关的通用功能(例如日志、权限、事务)切面式的提取分离出来,让多个类共享一个行为,一旦这个行为发生了改变,不必修改类,而只需要修改这个行为即可。
因此,我们可以把注意力集中在核心的业务逻辑上
4.利用AOP可以对业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率
扩展问题:
什么是动态代理?Java中有两种动态代理:JDK动态代理,CGLIB动态代理
2019年9月29号
aop--->声明式事务管理(aop管理)
@Servicepublit class Test{
@Transcational
public String a(){
}
}
2019.10.11
//得到配置文件流
InputStream inputStream = Resources.getResourceAsStream("config.xml");
// 创建会话工厂,传入mybatis的配置文件信息
---------------------------------------------------------------------------
建造者模式,用于构建复杂的对象(构架器)
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();---------------------------------------------------------------------------
(工厂模式)
方案一:SqlSessionFactory factory = builder.build(inputStream);
方案二:SqlSessionFactory factory = builder.build(configuration);
工厂生产具体的产品
SqlSession sqlSession = factory.openSession();//通过factory工厂模式来获取连接
---------------------------------------------------------------------------
//创建代理对象
session动态代理,直接生成【接口:StudentDao】的实现类
StudentDao studentDao = sqlSession.getMapper(StudentDao.class);json gson gsonBuilder (new gsonBuilder时间格式+.)
SqlSession:是一个很大的对象。如果一个很大的对象,一定不可能直接new出来(关联java设计模式)
show tables:查询表
show databases:查询库
use 库名:调用添加:insert into 表名 values();
课后补:工厂模式