Day61 Mybatis框架入門
開發前的準備
開發工具的更換:eclipseEE+MySQL+tomcat7.0+jre1.7
開發工具由Myeclipse換成eclipse.
Myeclipse和eclipse開發Web項目的區別:
編碼準備:在eclipse的dropins文件夾下集成io.emmet.eclipse_1.0.0.201304090013.jar 實現前端代碼
提示功能,如果需要SVN集成,需要在此文件夾下放入SVN,site1.8下的features文件和plugins文件
2、編寫時候默認是web3.0
區別:
名稱: 創建Dynamic web Project
1、需要在創建項目時指定tomcat和Jre.執行時右鍵項目 run as.
2、 eclipse 由于是Web3.0,所以沒有靜態web.xml文件,每個servlet的映射要在各自的文件中類前一行寫
@WebServlet("/別名")
3、不自動生成帶有JSTL標簽庫,需要將myeclipse的jar包在此導入。
4、WebContent就是Myeclipse的WebRoot,src在Java Resources文件夾下。
5、集成MySQL數據庫jar包。
注意:
如果在創建項目的時候忘了指定tomcat服務器,那么就會提示沒有導入響應的jar包。
需要在builde path->configure builde path->libraries->add library->server Runtime下重新指定tomcat的路徑,導入響應的jar包。
導入別人的項目的時候也會出現此種情況。
SQL語句 : comment 相當于java里面的注釋。
id int(10) not null auto_increment comment '花卉ID',
JSP區別:
需要改動三個utf-8
Mybitis的介紹
Mybatis:Mybatis 開源免費框架.原名叫iBatis,2010在google code,2013年遷移到github
MyBatis 是一款優秀的持久層框架,它支持定制化 SQL、存儲過程以及高級映射。MyBatis 避免了幾乎所有的 JDBC 代碼和手動設置參數以及獲取結果集。MyBatis 可以使用簡單的 XML 或注解來配置和映射原生信息,將接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java對象)映射成數據庫中的記錄。
知識體系
Mybatis的課程大綱:
框架的概念
MyBatis基于SqlSession對象完成單表單參數的增刪改查
Mybatis基于代理模式完成單表多參數的增刪改查
Mybaris基于代理模式完成SQL語句動態拼接的增刪改查
Mybatis基于代理模式完成多表查詢
Mybatis的緩存和ThreadLocal封裝
Mybatis的運行原理
eclipse的熟悉使用
使用MVC完成花卉管理系統的簡單功能
高級軟件介紹:
開發工具:eclipse mars2.0
jdk:1.7
服務器:tomcat
數據庫:mySQL
命名規范:
包名:
com.bjsxt.包名
com.bjsxt.dao
com.bjsxt.dao.impl
com.bjsxt.service
com.bjsxt.service.impl
com.bjsxt.servlet
com.bjsxt.pojo vo entry
com.bjsxt.util
com.bjsxt.filter
com.bjsxt.listener
com.bjsxt.exception
高級包名:
com.bjsxt.mapper
com.bjsxt.service
com.bjsxt.service.impl
com.bjsxt.controller
com.bjsxt.pojo
類名:
類名必須首字母大寫
方法名:
駝峰原則
變量名:
駝峰原則
基于MVC完成花卉管理系統:
需求文檔:在飛秋中下載即可
1 完成數據庫設計
創建數據庫
基于界面方式
基于MYSQL命令方式:
使用任意一個現有數據庫打開命令窗口
create database 數據庫名 default character set utf8
切換數據庫 use 數據庫名
在創建的數據庫中創建花卉信息表
create table flower(
id int(10) not null auto_increment comment '花卉ID',
name varchar(100) not null comment '花名',
price float not null comment '價格',
production varchar(200) not null comment '產地',
primary key(id)
)comment '花卉信息表'
添加測試數據:
insert into flower values(default,'矮牽牛',2.5,'南美阿根廷');
insert into flower values(default,'百日草',5.0,'墨西哥');
insert into flower values(default,'半枝蓮',4.3,'巴西');
2 開始編碼設計(基于MVC)
在eclipse中創建web項目。
file-->Dynamic web poject
注意:
在彈出的窗口中書寫項目明
在Target runtime中選擇或者配置該項目要運行的服務器環境
單獨進行運行環境的配置:
點擊New runtime-->選擇tomcat7.0--->next-->點擊Browse選擇服務器的路徑
然后在jre中選擇安轉的jdk環境,如果選項中沒有,點擊installed jres,配置JDK環境即可
如果在新建項目時沒有配置tomcat環境,則JSP文件會報錯,需要手動的配置server runtime
項目右鍵--->Build path --->configure build path--->Libraries--->add libraries-->service runtime
創建項目模版:
創建包
導入項目所需jar包
查看所有的花卉信息
點擊按鈕發送查看請求到servlet
--------------------------->servlet
調用業務層對象獲取花卉信息
將信息存儲到request作用域中
請求轉發給jsp文件
-------------------------->service
調用dao層去數據庫中獲取花卉信息
注意:
在jsp中遍歷顯示所有的花卉信息,但是需要手動導入jstl的相關jar包
使用注解方式配置Servlet的別名:在Servlet的類名上使用@WebServlet("/別名")
添加花卉信息
eclipse項目默認發布路徑介紹:
eclipse工作空間路徑\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps
框架學習
框架的概念:
軟件的半成品。
其實框架就是專門處理某一類問題的代碼的封裝。
框架的特點:
提升開發效率。
框架的形成:
示例:數據庫操作
問題:數據庫操作,增刪改查,但是發現在寫發代碼時,除了sql語句參數,返回值等不同以外,代碼的重復率達到了80%以上。
解決:
對代碼進行封裝(相同的保留,不同的傳參)。
實現:
查詢:
sql語句,參數,返回類型
增加:
sql語句,參數
修改:
sql語句,參數
刪除:
sql語句,參數
使用:
第一種方式:
將封裝的源碼文件全部給需要使用的人,將源碼文件復制到項目中。
將封裝代碼配套的使用文檔給使用的人
缺點:
源碼數量如果比較多的話,會造成項目編譯效率底下。項目代碼體系結構混亂。
第二種方式:
將封裝代碼打壓成jar文件,將jar文件給需要使用的人
將封裝代碼配套的使用文檔給使用的人
優點:
在不影響原有代碼結構的基礎下,使用別人的代碼。
第一個Mybatis程序
Mybatis簡介:
原名為ibatis,一個基于java的持久層框架。
特點:
簡單易學
解除Sql與程序代碼的耦合。
MyBatis搭建流程(第一個Mybatis程序):
導入myBatis相關jar包(別忘了還有數據庫的jar包)還有myBatis依賴的相關jar包
創建并完成配置文件的書寫
數據庫連接相關的配置文件:
在src下創建mybatis.xml
在mybatis文件中加載DTD文件:
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
并在mybais文件中配置相關數據:
<!-- 聲明數據庫連接環境 -->
<!--創建并聲明具體的數據庫環境 -->
<!--聲明事務管理 :使用原生事務管理,事務還是由程序員自己編寫事務管理代碼-->
<!--配置數據源 -->
<!--配置mapper -->
SQL語句的配置文件:
在src下創建包com.bjsxt.mapper
在mapper包中創建xml文件用來存儲sql參數信息
在xml文件中加載DTD
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
在xml文件中創建并配置SQL語句
<!--創建查詢sql語句 -->
<select id="selF" resultType="com.bjsxt.pojo.Flower">
select * from flower
</select>
id屬性是唯一標識一條SQL語句的
resultType:返回值類型,規定了查詢結果的每條結果的存儲方式。
注意:mapper標簽的namespace屬性值是用來唯一標識一個xml配置文件信息的
格式為包名+文件名,例如:com.bjsxt.mapper.FlowerMapper
使用Mybatis的對象操作數據庫
獲取配置文件的流對象:
InputStream is = Resources.getResourceAsStream("mybatis.xml");
創建SqlSession工廠對象
SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(is);
創建SqlSession對象
SqlSession ss=factory.openSession();
使用SqlSession對象操作數據庫
流程詳解:
mybatis.xml文件解釋:
mapper.xml文件解釋:
MyBatis的三種查詢方式(基于SqlSession對象完成):
第一種:
selectList(String sqlpath):返回存儲了查詢數據的list集合,適用于查詢多條數據
第二種:
selectOne(String sqlpath):返回查到的一條指定的記錄,適用于查詢某條記錄
第三種:
selectMap(String sqlpath):返回存儲了指定數據的map集合
Map<String,Map<String,Object>> map=ss.selectMap("com.bjsxt.mapper.FlowerMapper.selMap", "id");
注意: id可以為pojo類的任何屬性, 也就是Map里的值存的是一條完整的數據。
MyBatis配置文件源碼
MyBatis配置文件源碼:
<?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>
<!-- 聲明數據庫連接環境 default屬性是 environment標簽的ID,確定使用的數據庫環境-->
<environments default="mysql">
<!--創建并聲明具體的數據庫環境 id屬性唯一標識一個聲明的數據庫環境 -->
<environment id="mysql">
<!--聲明事務管理 :type屬性聲明數據庫的事務管理方式 ,使用原生事務管理,事務還是由程序員自己編寫事務管理代碼 -->
<transactionManager type="JDBC"></transactionManager>
<!--配置數據源 type屬性聲明使用數據庫連接池技術-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
<property name="username" value="root"/>
<property name="password" value="1234"/>
</dataSource>
</environment>
</environments>
<!--配置mapper 配置mapper.xml文件路徑,可以配置多個-->
<mappers>
<mapper resource="com/bjsxt/mapper/FlowerMapper.xml"/> 注意此處是以/分割開,而不是.
</mappers>
</configuration>
-----------------------------------------------------------------------------------------------------
Mapper.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.bjsxt.mapper.FlowerMapper">
<!--創建查詢sql語句 -->
<select id="selF" resultType="com.bjsxt.pojo.Flower">
select * from flower
</select>
<select id="selOne" resultType="com.bjsxt.pojo.Flower">
select *from flower where id=1
</select>
<select id="selMap" resultType="map">
select *from flower
</select>
</mapper>
--------------------------------------------------------------------------------------------------------
Mybatis操作數據庫示例代碼:
//獲取配置文件流對象
InputStream is = Resources.getResourceAsStream("mybatis.xml");
//獲取SqlSession工廠對象
SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(is);
//獲取SqlSession對象
SqlSession ss=factory.openSession();
//使用ss對象操作數據庫
List<Flower> lf=ss.selectList("com.bjsxt.mapper.FlowerMapper.selF");
System.out.println(lf);
//使用ss對象操作數據庫
Flower f=ss.selectOne("com.bjsxt.mapper.FlowerMapper.selOne");
System.out.println(f);
//使用ss對象操作數據庫
Map<String,Map<String,Object>> map=ss.selectMap("com.bjsxt.mapper.FlowerMapper.selMap", "id");
System.out.println(map);
小結
開發前的準備
eclipse的使用
Mybatis框架介紹
第一個Mybatis程序
附:第一個程序的包圖:
智能推薦
mybatis框架入門(一)
文章目錄 一、MyBatis簡介 (一)什么是MyBatis (二)為什么要使用MyBatis 二、MyBatis入門 (一)準備數據,創建庫和表 (二)創建工程,導入所需jar包、創建測試類 (三)添加mybatis-config.xml文件 (四)添加EmpMapper.xml文件 (五)添加并編寫Emp實體類 (六)實現測試類,并測試 三、MyBatis入門細節 (一)mybatis-con...
Python爬蟲day7—Scrapy框架入門
Scrapy爬蟲框架入門 概述 Scrapy是Python開發的一個非常流行的網絡爬蟲框架,可以用來抓取Web站點并從頁面中提取結構化的數據,被廣泛的用于數據挖掘、數據監測和自動化測試等領域。下圖展示了Scrapy的基本架構,其中包含了主要組件和系統的數據處理流程(圖中帶數字的紅色箭頭)。 組件 Scrapy引擎(Engine):Scrapy引擎是用來控制整個系統的數據處理流程。 調度器(Sche...
freemarker + ItextRender 根據模板生成PDF文件
1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...
電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!
Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...
猜你喜歡
requests實現全自動PPT模板
http://www.1ppt.com/moban/ 可以免費的下載PPT模板,當然如果要人工一個個下,還是挺麻煩的,我們可以利用requests輕松下載 訪問這個主頁,我們可以看到下面的樣式 點每一個PPT模板的圖片,我們可以進入到詳細的信息頁面,翻到下面,我們可以看到對應的下載地址 點擊這個下載的按鈕,我們便可以下載對應的PPT壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...
Linux C系統編程-線程互斥鎖(四)
互斥鎖 互斥鎖也是屬于線程之間處理同步互斥方式,有上鎖/解鎖兩種狀態。 互斥鎖函數接口 1)初始化互斥鎖 pthread_mutex_init() man 3 pthread_mutex_init (找不到的情況下首先 sudo apt-get install glibc-doc sudo apt-get install manpages-posix-dev) 動態初始化 int pthread_...
統計學習方法 - 樸素貝葉斯
引入問題:一機器在良好狀態生產合格產品幾率是 90%,在故障狀態生產合格產品幾率是 30%,機器良好的概率是 75%。若一日第一件產品是合格品,那么此日機器良好的概率是多少。 貝葉斯模型 生成模型與判別模型 判別模型,即要判斷這個東西到底是哪一類,也就是要求y,那就用給定的x去預測。 生成模型,是要生成一個模型,那就是誰根據什么生成了模型,誰就是類別y,根據的內容就是x 以上述例子,判斷一個生產出...
styled-components —— React 中的 CSS 最佳實踐
https://zhuanlan.zhihu.com/p/29344146 Styled-components 是目前 React 樣式方案中最受關注的一種,它既具備了 css-in-js 的模塊化與參數化優點,又完全使用CSS的書寫習慣,不會引起額外的學習成本。本文是 styled-components 作者之一 Max Stoiber 所寫,首先總結了前端組件化樣式中的最佳實踐原則,然后在此基...