MyBatis 是一款優秀的持久層框架,它支持定製化 SQL、存儲過程以及高級映射。MyBatis 避免了幾乎全部的 JDBC 代碼和手動設置參數以及獲取結果集。使開發者只須要關注SQL自己,而不須要花費精力去處理例如註冊驅動、建立connection、建立statement、手動設置參數、結果集檢索等jdbc繁雜的過程代碼。java
建立db_mybatis庫,emp表,插入若干記錄mysql
-- 一、建立數據庫 db_mybatis 數據庫 create database if not exists db_mybatis charset utf8; use db_mybatis; -- 選擇db_mybatis數據庫 -- 二、刪除emp表(若是存在) drop table if exists emp; -- 三、在 db_mybatis 庫中建立 emp 表 create table emp( id int primary key auto_increment, name varchar(50), job varchar(50), salary double ); -- 四、往 emp 表中, 插入若干條記錄 insert into emp values(null, '李四', '程序員', 3300); insert into emp values(null, '王五', '程序員', 2800); insert into emp values(null, '小花', '程序員鼓勵師', 2700); insert into emp values(null, '趙六', '部門總監', 4200); insert into emp values(null, '小明', '程序員', 3000);
在src/main/resources下面:程序員
建立mybatis/mybatis-config.xml 建立mapper/mapper.xml
<dependencies> <!-- junit單元測試 --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.10</version> </dependency> <!-- mysql驅動 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.32</version> </dependency> <!-- mybatis --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.2.8</version> </dependency> </dependencies>
給mybatis-config.xml文件添加以下內容:web
<?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 > <!-- 1.配置環境,可配置多個環境(好比:develop開發、test測試) --> <environments default="develop"> <environment id="develop"> <!-- 1.1.配置事務管理方式:JDBC/MANAGED JDBC:將事務交給JDBC管理(推薦) MANAGED:本身管理事務 --> <transactionManager type="JDBC"></transactionManager> <!-- 1.2.配置數據源,即鏈接池 JNDI/POOLED/UNPOOLED JNDI:已過期 POOLED:使用鏈接池(推薦) UNPOOLED:不使用鏈接池 --> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/db_mybatis?characterEncoding=utf-8"/> <property name="username" value="root"/> <property name="password" value="root"/> </dataSource> </environment> </environments> <!-- 2.導入Mapper配置文件,若是mapper文件有多個,能夠經過多個mapper標籤導入 --> <mappers> <mapper resource="/mapper.xml"/> </mappers> </configuration>
給mapper.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值應該保證惟一 在程序中經過[ namespace + id ]定位到要執行哪一條SQL語句 --> <mapper namespace="EmpMapper"> <!-- 經過select、insert、update、delete標籤聲明要執行的SQL --> <select id="findAll" resultType="com.yanan.pojo.User"> select * from emp </select> </mapper>
注意:該實體類中的屬性名必須和數據庫中的字段名一致,不然沒法封裝進去。
建立User實體類,並提供get、set和重寫toString()方法:數據庫
package com.yanan.pojo; /** * 實體類 * @author 慕客 * */ public class User { //1.聲明實體類中的屬性 private Integer id; private String name; private String job; private Double salary; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getJob() { return job; } public void setJob(String job) { this.job = job; } public Double getSalary() { return salary; } public void setSalary(Double salary) { this.salary = salary; } @Override public String toString() { return "User [id=" + id + ", name=" + name + ", job=" + job + ", salary=" + salary + "]"; } }
編寫findAll()方法:session
/** * 查詢全部用戶信息,返回一個List<User> * @throws IOException */ @Test public void findAll() throws IOException { //1.讀取mybatis的核心配置文件(mybatis-config.xml) InputStream in = Resources .getResourceAsStream("mybatis-config.xml"); //2.經過配置信息獲取一個SqlSessionFactory工廠對象 SqlSessionFactory fac = new SqlSessionFactoryBuilder().build( in ); //3.經過工廠獲取一個SqlSession對象 SqlSession session = fac.openSession(); //4.經過namespace+id找到要執行的sql語句並執行sql語句 List<User> list = session .selectList("EmpMapper.findAll"); //5.輸出結果 for(User e : list) { System.out.println( e ); } }
執行findAll方法,輸出結果爲:mybatis