MyBatis-学习笔记02【02.Mybatis入门案例】
- Java后端 學(xué)習(xí)路線 筆記匯總表【黑馬程序員】
目錄
1 mybatis的入門
在resources文件夾下 導(dǎo)入log4j.properties
創(chuàng)建測試類
2 mybatis入門案例中的設(shè)計模式分析
3 mybatis注解開發(fā)和編寫dao實現(xiàn)類的方式
注解annotation的使用
XML配置方式vs注解配置方式
MyBatis使用dao實現(xiàn)類
結(jié)構(gòu)圖
UserDaoImpl.java
MybatisTest.java
mybatis框架 共四天 第一天:mybatis入門mybatis的概述mybatis的環(huán)境搭建mybatis入門案例自定義mybatis框架(主要的目的是為了讓大家了解mybatis中執(zhí)行細(xì)節(jié)) 第二天:mybatis基本使用mybatis的單表crud操作mybatis的參數(shù)和返回值mybatis的dao編寫mybatis配置的細(xì)節(jié)幾個標(biāo)簽的使用 第三天:mybatis的深入和多表mybatis的連接池mybatis的事務(wù)控制及設(shè)計的方法mybatis的多表查詢一對多(多對一)多對多 第四天:mybatis的緩存和注解開發(fā)mybatis中的加載時機(jī)(查詢的時機(jī))mybatis中的一級緩存和二級緩存mybatis的注解開發(fā)單表CRUD多表查詢 ----------------------------------------------------------- 1、什么是框架?它是我們軟件開發(fā)中的一套解決方案,不同的框架解決的是不同的問題。使用框架的好處:框架封裝了很多的細(xì)節(jié),使開發(fā)者可以使用極簡的方式實現(xiàn)功能。大大提高開發(fā)效率。 2、三層架構(gòu)表現(xiàn)層:是用于展示數(shù)據(jù)的業(yè)務(wù)層:是處理業(yè)務(wù)需求持久層:是和數(shù)據(jù)庫交互的 3、持久層技術(shù)解決方案JDBC技術(shù):ConnectionPreparedStatementResultSetSpring的JdbcTemplate:Spring中對jdbc的簡單封裝Apache的DBUtils:它和Spring的JdbcTemplate很像,也是對Jdbc的簡單封裝以上這些都不是框架JDBC是規(guī)范Spring的JdbcTemplate和Apache的DBUtils都只是工具類 4、mybatis的概述mybatis是一個持久層框架,用java編寫的。它封裝了jdbc操作的很多細(xì)節(jié),使開發(fā)者只需要關(guān)注sql語句本身,而無需關(guān)注注冊驅(qū)動,創(chuàng)建連接等繁雜過程它使用了ORM思想實現(xiàn)了結(jié)果集的封裝。ORM:Object Relational Mappging 對象關(guān)系映射簡單的說:就是把數(shù)據(jù)庫表和實體類及實體類的屬性對應(yīng)起來讓我們可以操作實體類就實現(xiàn)操作數(shù)據(jù)庫表。user Userid userIduser_name userName今天我們需要做到:實體類中的屬性和數(shù)據(jù)庫表的字段名稱保持一致。user數(shù)據(jù)表 User實體類id iduser_name user_name 5、mybatis的入門mybatis的環(huán)境搭建第一步:創(chuàng)建maven工程并導(dǎo)入坐標(biāo)第二步:創(chuàng)建實體類和dao的接口第三步:創(chuàng)建Mybatis的主配置文件 SqlMapConifg.xml第四步:創(chuàng)建映射配置文件 IUserDao.xml環(huán)境搭建的注意事項:第一個:創(chuàng)建IUserDao.xml 和 IUserDao.java時,名稱是為了和我們之前的知識保持一致。在Mybatis中它把持久層的操作接口名稱和映射文件也叫做:Mapper所以:IUserDao 和 IUserMapper是一樣的。(Mapper==Dao)第二個:在idea中創(chuàng)建目錄的時候,它和包是不一樣的包在創(chuàng)建時:com.itheima.dao是三級結(jié)構(gòu)目錄在創(chuàng)建時:com.itheima.dao是一級目錄第三個:mybatis的映射配置文件位置必須和dao接口的包結(jié)構(gòu)相同第四個:映射配置文件的mapper標(biāo)簽namespace屬性的取值必須是dao接口的全限定類名第五個:映射配置文件的操作配置(select),id屬性的取值必須是dao接口的方法名好處:當(dāng)我們遵從了第三、四、五點之后,我們在開發(fā)中就無須再寫dao的實現(xiàn)類。mybatis的入門案例第一步:讀取配置文件第二步:創(chuàng)建SqlSessionFactory工廠第三步:創(chuàng)建SqlSession第四步:創(chuàng)建Dao接口的代理對象第五步:執(zhí)行dao中的方法第六步:釋放資源注意事項:不要忘記在映射配置中告知mybatis要封裝到哪個實體類中配置的方式:指定實體類的全限定類名 resultType="com.itheima.domain.User"mybatis基于注解的入門案例:把IUserDao.xml移除,在dao接口的方法上使用@Select注解,并且指定SQL語句同時需要在SqlMapConfig.xml中的mapper配置時,使用class屬性指定dao接口的全限定類名。明確(說明)-mybatis可寫dao實現(xiàn)類:我們在實際開發(fā)中,都是越簡便越好,所以都是采用不寫dao實現(xiàn)類的方式,不管使用XML配置還是使用注解配置。但是Mybatis它是支持寫dao實現(xiàn)類的。 6、自定義Mybatis的分析:mybatis在使用代理dao的方式實現(xiàn)增刪改查時做什么事呢?只有兩件事:第一:創(chuàng)建代理對象;第二:在代理對象中調(diào)用selectList。自定義mybatis能通過入門案例看到類class Resourcesclass SqlSessionFactoryBuilderinterface SqlSessionFactoryinterface SqlSession
1 mybatis的入門
在resources文件夾下 導(dǎo)入log4j.properties
# Set root category priority to INFO and its only appender to CONSOLE. #log4j.rootCategory=INFO, CONSOLE debug info warn error fatal log4j.rootCategory=debug, CONSOLE, LOGFILE# Set the enterprise logger category to FATAL and its only appender to CONSOLE. log4j.logger.org.apache.axis.enterprise=FATAL, CONSOLE# CONSOLE is set to be a ConsoleAppender using a PatternLayout. log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n# LOGFILE is set to be a File appender using a PatternLayout. log4j.appender.LOGFILE=org.apache.log4j.FileAppender log4j.appender.LOGFILE.File=d:\axis.log log4j.appender.LOGFILE.Append=true log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout log4j.appender.LOGFILE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n創(chuàng)建測試類
package com.itheima.test;import com.itheima.dao.IUserDao; import com.itheima.domain.User; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.InputStream; import java.util.List;/*** mybatis的入門案例*/ public class MybatisTest {/*** 入門案例** @param args*/public static void main(String[] args) throws Exception {//1.讀取配置文件 加載文件中的信息InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");//連接數(shù)據(jù)庫//2.創(chuàng)建SqlSessionFactory工廠,有了工廠生產(chǎn)操作對象SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();SqlSessionFactory factory = builder.build(in); // SqlSessionFactory接口//3.使用工廠生產(chǎn)SqlSession對象,這個對象操作數(shù)據(jù)庫SqlSession session = factory.openSession();//4.使用SqlSession創(chuàng)建Dao接口的代理對象IUserDao userDao = session.getMapper(IUserDao.class);//代理方式不寫dao接口//5.使用代理對象執(zhí)行方法List<User> users = userDao.findAll();for (User user : users) {System.out.println(user);}//6.釋放資源session.close();in.close();} }2 mybatis入門案例中的設(shè)計模式分析
每次多創(chuàng)建一個類的優(yōu)勢:靈活封裝,使得開發(fā)者在應(yīng)用的時候 有更多的選擇。
備注:這一小節(jié),老師就講了這套代碼!分析的很詳細(xì),紙質(zhì)筆記 不太詳細(xì)!
入門案例的分析3 mybatis注解開發(fā)和編寫dao實現(xiàn)類的方式
mybatis的入門案例
?? ??? ?第一步:讀取配置文件
?? ??? ?第二步:創(chuàng)建SqlSessionFactory工廠
?? ??? ?第三步:創(chuàng)建SqlSession
?? ??? ?第四步:創(chuàng)建Dao接口的代理對象
?? ??? ?第五步:執(zhí)行dao中的方法
?? ??? ?第六步:釋放資源
?? ??? ?注意事項:
?? ??? ??? ?不要忘記在映射配置中告知mybatis要封裝到哪個實體類中
?? ??? ??? ?配置的方式:指定實體類的全限定類名 resultType="com.itheima.domain.User"
? ? ? ? mybatis基于注解的入門案例:
?? ??? ??? ?把IUserDao.xml移除,在dao接口的方法上使用@Select注解,并且指定SQL語句
?? ??? ??? ?同時需要在SqlMapConfig.xml中的mapper配置時,使用class屬性指定dao接口的全限定類名。
?? ??? ?明確(說明)-mybatis可寫dao實現(xiàn)類:
?? ??? ??? ?我們在實際開發(fā)中,都是越簡便越好,所以都是采用不寫dao實現(xiàn)類的方式,不管使用XML配置還是使用注解配置。
?? ??? ??? ?但是Mybatis它是支持寫dao實現(xiàn)類的。
注解annotation的使用
day01_eesy_02mybatis_ennotation
XML配置方式vs注解配置方式
注解配置方式比xml配置方式要簡單許多,注解方式簡化開發(fā)。
???????
MyBatis使用dao實現(xiàn)類
mybatis可以實現(xiàn)dao實現(xiàn)類的功能,所以寫dao實現(xiàn)類:會增加開發(fā)時間,于是沒有太大的意義。
dao實現(xiàn)類的成功查詢結(jié)果圖:
結(jié)構(gòu)圖
UserDaoImpl.java
package com.itheima.dao.impl;import com.itheima.dao.IUserDao; import com.itheima.domain.User; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory;import java.util.List;public class UserDaoImpl implements IUserDao {private SqlSessionFactory factory;public UserDaoImpl(SqlSessionFactory factory) { // 更改默認(rèn)構(gòu)造函數(shù)this.factory = factory; // 使用factory得到session}public List<User> findAll() {//1.使用工廠創(chuàng)建SqlSession對象SqlSession session = factory.openSession(); // 使用factory得到session//2.使用session執(zhí)行查詢所有用戶的方法List<User> users = session.selectList("com.itheima.dao.IUserDao.findAll");//通過配置拿到sql語句session.close();//3.返回查詢結(jié)果return users;} }MybatisTest.java
package com.itheima.test;import com.itheima.dao.IUserDao; import com.itheima.dao.impl.UserDaoImpl; import com.itheima.domain.User; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.InputStream; import java.util.List;/*** mybatis的入門案例*/ public class MybatisTest {/*** 入門案例** @param args*/public static void main(String[] args) throws Exception {//1.讀取配置文件InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");//2.創(chuàng)建SqlSessionFactory工廠SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();SqlSessionFactory factory = builder.build(in);//3.使用工廠創(chuàng)建dao對象IUserDao userDao = new UserDaoImpl(factory);//4.使用代理對象執(zhí)行方法List<User> users = userDao.findAll();for (User user : users) {System.out.println(user);}//5.釋放資源in.close();} }把現(xiàn)在的工作做好,才能幻想將來的事情,專注于眼前的事情,對于尚未發(fā)生的事情而陷入無休止的憂慮之中,對事情毫無幫助,反而為自己憑添了煩惱。
總結(jié)
以上是生活随笔為你收集整理的MyBatis-学习笔记02【02.Mybatis入门案例】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MyBatis-学习笔记01【01.My
- 下一篇: MyBatis-学习笔记03【03.自定