用mybatis鏈接數據庫十分的方便,這里總結一下具體的步驟。
1.首先創建一個maven項目
在pom.xml導入依賴
1 <dependencies> 2 <dependency> 3 <groupId>org.mybatis</groupId> 4 <artifactId>mybatis</artifactId> 5 <version>3.4.4</version> 6 </dependency> 7 <dependency> 8 <groupId>mysql</groupId> 9 <artifactId>mysql-connector-java</artifactId> 10 <version>5.1.47</version> 11 </dependency> 12 <dependency> 13 <groupId>c3p0</groupId> 14 <artifactId>c3p0</artifactId> 15 <version>0.9.1.2</version> 16 </dependency> 17 18 </dependencies>
2.在resources目錄創建mybatis配置文件名字叫做mybatis-config.xml 。
在mybatis-config.xml中根據自己的需要設置一些setting,配置相應的環境,還有映射文件。
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE configuration 3 PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 4 "http://mybatis.org/dtd/mybatis-3-config.dtd"> 5 <configuration> 6 <!-- 引入外部資源文件 --> 7 <properties resource="jdbc.properties"></properties> 8 <!-- 設置駝峰匹配 --> 9 <settings> 10 <setting name="mapUnderscoreToCamelCase" value="true"/> 11 <!-- 打印查詢語句 --> 12 <setting name="logImpl" value="STDOUT_LOGGING" /> 13 </settings> 14 <!-- 配置環境:可以配置多個環境,default:配置某一個環境的唯一標識,表示默認使用哪個環境 --> 15 <environments default="development"> 16 <environment id="development"> 17 <transactionManager type="JDBC"/> 18 <dataSource type="POOLED"> 19 <!-- 配置連接信息 --> 20 <property name="driver" value="${jdbc.driver}"/> 21 <property name="url" value="${jdbc.url}"/> 22 <property name="username" value="${jdbc.username}"/> 23 <property name="password" value="${jdbc.password}"/> 24 </dataSource> 25 </environment> 26 </environments> 27 <!-- 配置映射文件:用來配置sql語句和結果集類型等 --> 28 <mappers> 29 <mapper resource="org/seckill/mapper/dataDao.xml"/> 30 </mappers> 31 </configuration>
注意:這個地方的xml文件就是一會要寫sql語句的xml,這個路徑根據自己的配置進行調整。
3.在resources下配置一個properties
這個用來寫你數據庫連接的host、user、password
4.在java下創建一個包,里面寫dao層的接口。【我這個包起名的時候很蠢,大家一定按照規則寫包名!!】
dataDao接口就是用來接收數據庫中的數據的格式問題。
舉個例子:我自己的數據庫里是一個含有年級的學生信息(里面有id name 年級 分數等等)
我要取出所有年級為高中的學生信息。
1 package org.seckill.mapper; 2 3 import org.seckill.entity.Data; 4 5 import java.util.List; 6 7 public interface dataDao { 8 List<Data> selectAll(String grade); 9 }
通過傳參數grade:小學/初中/高中 ,最后從數據庫導出的時候,就會被封裝為Data類型的一個列表。
那么:::Data數據類型是什么?
我在entity包中創建了一個Data類,就是把所有的一條sql語句中的id、name、年級、分數等封裝在一起。。(這個大家都懂)
Data類里面有:
1 private Long id; 2 private int mark; 3 private String names;
等等,包括他們的get、set方法。
5. 在同樣的mapper包下面,闖將一個dataDao的xml與接口對應。dataDao.xml里面是用來寫sql的。
<?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="org.seckill.mapper.dataDao"> <!--查詢所有--> <select id="selectAll" parameterType="String" resultType="org.seckill.entity.Data"> select * from A where grade=#{grade}; </select> </mapper>
namespace是對應的接口名字。#{grade}就是第4步在dataDao中傳入的年級。
6.由於只用了mybatis,所以我們需要自己創建會話工廠
在主函數中,或者單獨寫一個函數封裝連接功能。
1 String resource = "mybatis-config.xml"; 2 InputStream inputStream = null; 3 SqlSession session = null; 4 List<Data> all = null; 5 try { 6 inputStream = Resources.getResourceAsStream(resource); 7 //使用流對象創建一個會話工廠 8 SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(inputStream); 9 //session就是程序員與數據庫交互的入口 10 session = sf.openSession(); 11 dataDao mapper = session.getMapper(dataDao.class); 12 all = mapper.selectAll("高中"); 13 } catch (IOException e) { 14 e.printStackTrace(); 15 } finally { 16 session.commit(); 17 //關閉會話,釋放資源 18 session.close(); 19 }
最后所有拿到的數據就被放在
List<Data> all
這個list中了,就可以進一步進行處理。
這樣mybatis就鏈接mysql就完事了