框架学习日记1

框架学习日记1

为什么要使用框架

  1. 不用考虑布局、排版等,提高效率
  2. 可专心在简历内容上
  3. 结构统一,便于人事阅读
  4. 新手也可以作出专业的简历

什么是框架技术

1、是一个应用程序的半成品
2、提供可重用的公共结构
3、按一定规则组织的一组组件

框架技术优势

1、不用再考虑公共问题
2、专心在业务实现上
3、结构统一,易于学习、维护
4、新手也可写出好程序

主流框架介绍

Spring

1、依赖注入容器 / AOP实现
2、声明式事务
3、简化Java EE应用
4、黏合剂,将大家组装到一起

Spring MVC

1、结构最清晰的MVC Model2实现
2、高度可配置,支持多种视图技术
3、定制化开发

MyBatis

1、半自动化的ORM实现
2、DAO层
3、动态SQL
4、小巧灵活、简单易学


MyBatis

官方网站:http://mybatis.org
文档:https://mybatis.org/mybatis-3/zh/index.html

MyBatis特点

MyBatis简介
1、基于SQL语法,简单易学
2、能了解底层封装过程
3、SQL语句封装在配置文件中,便于统一管理与维护,降低程序的耦合度
4、方便程序代码调试

MyBatis框架优缺点

优点
1、与JDBC相比,减少了50%以上的代码量
2、最简单的持久化框架,小巧并简单易学
3、SQL代码从程序代码中彻底分离,可重用
4、提供XML标签,支持编写动态SQL
5、提供映射标签,支持对象与数据库的ORM字段映射

缺点
1、SQL语句编写工作量大,对开发人员有一定要求
2、数据库移植性差

MyBatis基本要素

1、MyBatis的核心对象
a. SqlSessionFactoryBuilder
b. SqlSessionFactory
c. SqlSession
在这里插入图片描述
2、mybatis-config.xml 系统核心配置文件
3、mapper.xml SQL映射文件

核心对象

SqlSessionFactoryBuilder
1、用过即丢,其生命周期只存在于方法体内
2、可重用其来创建多个 SqlSessionFactory 实例
3、负责构建SqlSessionFactory,并提供多个build方法的重载

SqlSessionFactory
1、SqlSessionFactory是每个MyBatis应用的核心
2、作用:创建SqlSession实例
3、作用域:Application
4、生命周期与应用的生命周期相同
5、单例
➢ 存在于整个应用运行时,并且同时只存在一个对象实例

SqlSession
1、包含了执行SQL所需的所有方法
2、对应一次数据库会话,会话结束必须关闭
3、线程级别,不能共享

搭建MyBatis开发环境

思路
1、下载mybatis-3.2.2.jar包并导入工程
2、编写MyBatis核心配置文件(configuration.xml)
3、创建实体类-POJO
4、DAO层-SQL映射文件(mapper.xml)
5、创建测试类
5.1、读取核心配置文件mybatis-config.xml
5.2、创建SqlSessionFactory对象,读取配置文件
5.3、创建SqlSession对象
5.4、调用mapper文件进行数据操作
在这里插入图片描述

mybatis-config.xml 系统核心配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">
  
<configuration>
<!-- configuration配置的顺序 -->
 <!--properties?,settings?,typeAliases?,typeHandlers?,objectFactory?,objectWrapperFactory?,reflectorFactory?,plugins?,environments?,databaseIdProvider?,mappers? -->

<properties resource="database.properties"/>
  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC"/>
      <dataSource type="POOLED">
    	<property name="driver" value="${driver}"/>
        <property name="url" value="${url}"/>
        <property name="username" value="${username}"/>
        <property name="password" value="${password}"/>
        
      </dataSource>
    </environment>
  </environments>
  
  <mappers>
  	
    <mapper resource="com/ishopn/model/CommoditytypeMapper.xml"/>
    <mapper resource="com/ishopn/model/CommodityMapper.xml"/>
    <mapper resource="com/ishopn/model/CustomerMapper.xml"/>
    <mapper resource="com/ishopn/model/OrderMapper.xml"/>
  </mappers>

</configuration>
CommoditytypeMapper.xml核心配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ishopn.model.CommoditytypeMapper">

  <select id="getCommoditytypeList" resultType="com.ishopn.model.Commoditytype">
    select * from commoditytype
  </select>
  
  <select id="getCommoditytypeById" resultType="com.ishopn.model.Commoditytype">
  	select * from commoditytype where ct_id=#{ct_id}
  </select>
  
  <update id="updCommoditytypeById">
  	update commoditytype set ct_name=#{ct_name} where ct_id=#{ct_id}
  </update>
  
  <insert id="insCommoditytype">
  	insert into commoditytype(ct_id,ct_name) values(#{ct_id},#{ct_name})
  </insert>
  
  <delete id="delCommoditytypeById">
  	delete from commoditytype where ct_id=#{ct_id}
  </delete>
</mapper>
Demo测试类
public class CommoditytypeDemo {
	
	@Test
	public void getCommoditytypeList() {
		try {
//若不用工具类的代码实现
//			String resource = "mybatis-config.xml";
//			InputStream inputStream = Resources.getResourceAsStream(resource);
//			//1 获取创建SqlSessionFactory
//			SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//			SqlSession session = sqlSessionFactory.openSession();
			
			
			SqlSession session = SessionHelper.getSqlSession();

			List<Commoditytype> ctList = session.selectList("com.ishopn.model.CommoditytypeMapper.getCommoditytypeList");
			System.out.println(ctList);
			SessionHelper.closeSqlSession(session);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	@Test
	public void getCommoditytypeById() {
		SqlSession session = SessionHelper.getSqlSession();
		Object selectOne = session.selectOne("com.ishopn.model.CommoditytypeMapper.getCommoditytypeById","2");
		System.out.println(selectOne);
		SessionHelper.closeSqlSession(session);
				
	}
	
	@Test 
	public void updCommoditytypeById() {
		SqlSession session = SessionHelper.getSqlSession();
		int line = session.update("com.ishopn.model.CommoditytypeMapper.updCommoditytypeById",new Commoditytype("7","电子"));
		System.out.println(line);
		//事务
		session.commit();  //提交事务
//		session.rollback();  //或者回滚
		SessionHelper.closeSqlSession(session);
	}
	
	@Test
	public void insCommoditytype() {
		SqlSession session = SessionHelper.getSqlSession();
		int line = session.insert("com.ishopn.model.CommoditytypeMapper.insCommoditytype",new Commoditytype("8","乐器"));
		System.out.println(line);
		
		session.commit();
		SessionHelper.closeSqlSession(session);
	}
	
	@Test
	public void delCommoditytypeById() {
		SqlSession session = SessionHelper.getSqlSession();
		int line = session.delete("com.ishopn.model.CommoditytypeMapper.delCommoditytypeById", "8");
		System.out.println(line);
		
		session.commit();
		SessionHelper.closeSqlSession(session);
	}
}
工具类
public class SessionHelper {
	private static SqlSessionFactory sqlSessionFactory;
	
	static {
		try {
			String resource = "mybatis-config.xml";
			InputStream inputStream = Resources.getResourceAsStream(resource);
			sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	public static SqlSession getSqlSession() {
		return sqlSessionFactory.openSession();
		
	}
	
	public static void closeSqlSession(SqlSession session) {
		if(session!=null) {
			session.close();
		}
		
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
大数据开发中的shell学习日记可以包括以下内容: 1. 学习Linux命令和shell脚本:作为大数据开发者,在Linux下进行开发是常见的,因此了解一些基本的Linux命令和编写shell脚本的技能是必备的。 2. 学习Django:Django是一个常用的Python Web框架,对于大数据开发来说,掌握Django可以帮助你构建数据分析和机器学习的应用程序。 3. 数据分析与机器学习:大数据开发中经常需要进行数据分析和机器学习的工作,因此学习相关的技术和算法是必要的。可以参考一些前人的经验贴和教程,了解常见的数据分析和机器学习方法。 4. 大数据组件:了解大数据开发中常用的组件,如Hadoop、Spark等,掌握它们的基本原理和使用方式。 5. 前端内容:虽然大数据开发主要是后端的工作,但了解一些基本的前端知识也是有帮助的,比如HTML、CSS和JavaScript。 6. 数据架构:了解大数据开发中的数据架构,包括数据采集层、数据存储与分析层、数据共享层和数据应用层等,这对于设计和搭建大数据系统是很重要的。 此外,你还可以在牛客网等平台上深入学习和交流大数据开发的经验和知识。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [java版斗地主源码-Interview-Summary:回顾这两年来学了些什么和日记,private](https://download.csdn.net/download/weixin_38592548/19393922)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [程序员必备学习资源资料库!!!免费开发书籍中文版大全](https://blog.csdn.net/qq_32146369/article/details/106194267)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [大数据平台架构--学习日记(一)](https://blog.csdn.net/lp279579561/article/details/104746083)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值