Mybatis-1-項目環境搭建(Maven)
一、Mybatis環境搭建
- 創建一個maven工程
- 導入依賴
mybatis的依賴
數據庫連接依賴(這里使用mysql)
可選:單元測試依賴,日志<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <mybatis.version>3.5.3</mybatis.version> <mysql-connector-java.version>8.0.13</mysql-connector-java.version> <log4j.version>1.2.17</log4j.version> <junit.version>4.11</junit.version> </properties> <dependencies> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>${mybatis.version}</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${mysql-connector-java.version}</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>${log4j.version}</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit.version}</version> </dependency> </dependencies>
- 新建 數據庫參數文件 db.properties
定義這幾個最基本的參數db.driver=com.mysql.cj.jdbc.Driver db.url=jdbc:mysql://localhost:3306/seven?characterEncoding=UTF-8 db.username=root db.password=tiger
- 新建 一個xml文件,文件名不強制要求。這里使用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"> <!-- 配置mybatis --> <configuration> <!-- 指定 MyBatis 數據庫配置文件 --> <properties resource="db.properties"/> <!-- 環境配置 --> <!-- 默認使用mysql這個環境 --> <environments default="mysql"> <!-- mysql 數據庫環境 --> <environment id="mysql"> <!-- 事務管理:JDBC --> <transactionManager type="JDBC"/> <!-- 數據源配置,POOLED是JDBC連接對象的數據源連接池的實現 --> <dataSource type="POOLED"> <property name="driver" value="${db.driver}"/> <property name="url" value="${db.url}"/> <property name="username" value="${db.username}"/> <property name="password" value="${db.password}"/> </dataSource> </environment> </environments> <!-- mappers告訴了MyBatis去哪里找持久化類的映射文件 注解方式不需要這個 --> <mappers> <mapper resource="com/seven/mapper/GuestMapper.xml" /> </mappers> </configuration>
- 新建包和映射文件夾
注意:
- 創建resources/com/seven/mapper文件夾時,不要com.seven.mapper這樣創建。因為這樣創建后,只有一個叫com.seven.mapper的文件夾,是一級目錄。
- 創建實體類,映射接口類,映射文件
實體類:Guest.java
映射接口類:GuestMapper.javapackage com.seven.entity; import java.util.Date; public class Guest { private Integer gid; private String gname; private String gpwd; private Date gbirthday; @Override public String toString() { return "Guest{" + "gid=" + gid + ", gname='" + gname + '\'' + ", gpwd='" + gpwd + '\'' + ", gbirthday=" + gbirthday + '}'; } public Integer getGid() { return gid; } public void setGid(Integer gid) { this.gid = gid; } public String getGname() { return gname; } public void setGname(String gname) { this.gname = gname; } public String getGpwd() { return gpwd; } public void setGpwd(String gpwd) { this.gpwd = gpwd; } public Date getGbirthday() { return gbirthday; } public void setGbirthday(Date gbirthday) { this.gbirthday = gbirthday; } }
映射文件:GuestMapper.xmlpackage com.seven.mapper; import com.seven.entity.Guest; import java.util.List; public interface GuestMapper { List<Guest> selectGuest(); }
創建后的工程結構:<?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.seven.mapper.GuestMapper"> <select id="selectGuest" resultType="com.seven.entity.Guest"> select * from t_guest </select> </mapper>
注意:
創建實體類:這里實體類中的成員變量名與表的字段名一致。
創建映射文件:
namespace配置為映射接口
sql語句的id必須和映射接口的方法名一致!!
必須要有返回結果封裝的對象類型
- 測試
測試前先創建log4j的配置文件:log4j.properties
然后編寫測試類:GuestTest.javalog4j.rootLogger=info, A1 , R log4j.appender.A1=org.apache.log4j.ConsoleAppender log4j.appender.A1.layout=org.apache.log4j.PatternLayout log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m -(:%L)%n log4j.appender.R=org.apache.log4j.RollingFileAppender log4j.appender.R.File=D:\\log\\testsocket_log.log log4j.appender.R.MaxFileSize=100KB log4j.appender.R.MaxBackupIndex=1 log4j.appender.R.layout=org.apache.log4j.PatternLayout log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
運行:import com.seven.entity.Guest; import com.seven.mapper.GuestMapper; 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.IOException; import java.io.InputStream; import java.util.List; public class GuestTest { public static void main(String[] args) throws IOException { // 1.導入mybatis配置文件,拋出異常 // 使用org.apache.ibatis.io.Resources導入mybatis的xml配置文件 InputStream resource = Resources.getResourceAsStream("mybatis.config.xml"); // 2.創建SqlSessionFactory工廠 // 說明:org.apache.ibatis.session.SqlSessionFactory是一個接口 // 使用org.apache.ibatis.session.SqlSessionFactoryBuilder來創建SqlSessionFactory工廠 SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder(); SqlSessionFactory factory = builder.build(resource); // 3.使用工廠生產SqlSession對象 SqlSession sqlSession = factory.openSession(); // 4.通過SqlSesison對象創建mapper接口的代理對象 GuestMapper guestMapper = sqlSession.getMapper(GuestMapper.class); // 5.通過代理對象來調用selectGuest函數,來訪問數據庫 List<Guest> guests = guestMapper.selectGuest(); // 6.打印一下結果 for (Guest guest : guests) { System.out.println(guest); } // 7.關閉資源 sqlSession.close(); resource.close(); } }
二、使用注解的方式
即:在映射接口中使用注解,編寫sql語句。
好處:在映射文件中,需要配置namespace,resultType等。而如果使用注解的方式,就不需要配置這些。
壞處:
步驟
說明:即使使用注解的方式,仍然需要mybatis的xml配置文件。
- 刪除映射文件 GuestMapper.xml
- 修改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"> <!-- 配置mybatis --> <configuration> <!-- 指定 MyBatis 數據庫配置文件 --> <properties resource="db.properties"/> <!-- 環境配置 --> <!-- 默認使用mysql這個環境 --> <environments default="mysql"> <!-- mysql 數據庫環境 --> <environment id="mysql"> <!-- 事務管理:JDBC --> <transactionManager type="JDBC"/> <!-- 數據源配置,POOLED是JDBC連接對象的數據源連接池的實現 --> <dataSource type="POOLED"> <property name="driver" value="${db.driver}"/> <property name="url" value="${db.url}"/> <property name="username" value="${db.username}"/> <property name="password" value="${db.password}"/> </dataSource> </environment> </environments> <!-- mappers告訴了MyBatis去哪里找持久化類的映射文件 注解方式不需要這個 --> <mappers> <!-- 使用xml方式開發,指定持久化類的映射文件 --> <!-- <mapper resource="com/seven/mapper/GuestMapper.xml" />--> <!-- 使用注解方式開發,指定持久化類接口 --> <mapper class="com.seven.mapper.GuestMapper"/> </mappers> </configuration>
- 在映射接口中添加注解
package com.seven.mapper; import com.seven.entity.Guest; import org.apache.ibatis.annotations.Select; import java.util.List; public interface GuestMapper { @Select("select * from t_guest") List<Guest> selectGuest(); }
- 運行測試類
在這之前把log4j的等級改成了debug,可以看到執行的sql語句
智能推薦
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 所寫,首先總結了前端組件化樣式中的最佳實踐原則,然后在此基...
19.vue中封裝echarts組件
19.vue中封裝echarts組件 1.效果圖 2.echarts組件 3.使用組件 按照組件格式整理好數據格式 傳入組件 home.vue 4.接口返回數據格式...