1. 程式人生 > 實用技巧 >mybatis學習-基礎

mybatis學習-基礎

1、基礎回顧

1.1、引入jar包

 1 <dependency>
 2     <groupId>org.mybatis</groupId>
 3     <artifactId>mybatis</artifactId>
 4     <version>3.2.8</version>
 5 </dependency>
 6 
 7 <dependency>
 8     <groupId>mysql</groupId>
 9     <artifactId>mysql-connector-java</artifactId>
10
<version>5.1.32</version> 11 </dependency>

1.2、 建立資料庫表

 1 CREATE TABLE PERSON(
 2  id INT(11) PRIMARY KEY AUTO_INCREMENT COMMENT '人員編號',
 3  `name` NVARCHAR(50) NOT NULL COMMENT '姓名',
 4  sex NVARCHAR(50) NOT NULL COMMENT '性別',
 5  age INT(20) NOT NULL COMMENT '年齡',
 6  rank NVARCHAR(50) NOT NULL COMMENT '等級',
7 department NVARCHAR(100) NOT NULL COMMENT '所在部門' 8 )COMMENT '人員資訊表'; 9 10 INSERT INTO PERSON(id,name,sex,age,rank,department) VALUES(1,'張三','',25,'1級','開發部');

1.3、JDBC基礎程式碼回顧

 1 package com.ft.dao;
 2 
 3 
 4 
 5 import java.sql.DriverManager;
 6 import java.sql.ResultSet;
 7 import java.sql.SQLException;
8 9 import com.mysql.jdbc.Connection; 10 import com.mysql.jdbc.PreparedStatement; 11 12 public class JDBCTest { 13 public static void main(String[] args) { 14 Connection conn = null; 15 PreparedStatement pst = null; 16 ResultSet rs = null; 17 try { 18 Class.forName("com.mysql.jdbc.Driver"); 19 String url = "jdbc:mysql://127.0.0.1:3306/ssmdemo"; 20 String user = "root"; 21 String password = "root"; 22 conn = (Connection) DriverManager.getConnection(url, user, password); 23 String sql = "select * from person"; 24 pst = (PreparedStatement) conn.prepareStatement(sql); 25 rs = pst.executeQuery(); 26 while(rs.next()) { 27 System.out.print(rs.getString("id")); 28 System.out.print(rs.getString("name")); 29 System.out.print(rs.getString("sex")); 30 System.out.print(rs.getString("age")); 31 System.out.print(rs.getString("rank")); 32 System.out.println(rs.getString("department")); 33 } 34 35 }catch (Exception e) { 36 // TODO: handle exception 37 } 38 finally { 39 if(rs != null) { 40 try { 41 rs.close(); 42 pst.close(); 43 conn.close(); 44 } catch (SQLException e) { 45 // TODO Auto-generated catch block 46 e.printStackTrace(); 47 } 48 } 49 } 50 51 } 52 53 54 }

1.4、JDBC確定分析

2、MyBatis介紹

3、MyBatis整體架構

4、MyBatis快速入門

4.1、全域性配置檔案(mybatis-config.xml)

 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 <!-- 根標籤 -->
 6 <configuration>
 7 <properties>
 8     <property name="driver" value="com.mysql.jdbc.Driver"/>
 9     <property name="url" value="jdbc:mysql://127.0.0.1:3306/mybatis-110?useUnicode=true&amp;characterEncoding=utf-8&amp;allowMultiQueries=true"/>
10     <property name="username" value="root"/>
11         <property name="password" value="123456"/>
12    </properties>
13 
14    <!-- 環境,可以配置多個,default:指定採用哪個環境 -->
15    <environments default="test">
16       <!-- id:唯一標識 -->
17       <environment id="test">
18          <!-- 事務管理器,JDBC型別的事務管理器 -->
19          <transactionManager type="JDBC" />
20          <!-- 資料來源,池型別的資料來源 -->
21          <dataSource type="POOLED">
22             <property name="driver" value="com.mysql.jdbc.Driver" />
23             <property name="url" value="jdbc:mysql://127.0.0.1:3306/ssmdemo" />
24             <property name="username" value="root" />
25             <property name="password" value="root" />
26          </dataSource>
27       </environment>
28       <environment id="development">
29          <!-- 事務管理器,JDBC型別的事務管理器 -->
30          <transactionManager type="JDBC" />
31          <!-- 資料來源,池型別的資料來源 -->
32          <dataSource type="POOLED">
33             <property name="driver" value="${driver}" /> <!-- 配置了properties,所以可以直接引用 -->
34             <property name="url" value="${url}" />
35             <property name="username" value="${username}" />
36             <property name="password" value="${password}" />
37          </dataSource>
38       </environment>
39    </environments>
40    <mappers>
41            <mapper resource="mapper/MyMapper.xml"/>
42    </mappers>
43    
44   </configuration>

4.2、配置Map.xml(MyMapper.xml)

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE mapper
 3   PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 4   "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 5 <!-- mapper:根標籤,namespace:名稱空間,隨便寫,一般保證名稱空間唯一 -->
 6 <mapper namespace="MyMapper">
 7    <!-- statement,內容:sql語句。id:唯一標識,隨便寫,在同一個名稱空間下保持唯一
 8       resultType:sql語句查詢結果集的封裝型別,tb_user即為資料庫中的表
 9     -->
10    <select id="selectperson" resultType="com.ft.entity.Person">
11       select * from person where id = #{id}
12    </select>
13 </mapper>

4.3、目錄結構

4.4、javaBean類

 1 package com.ft.entity;
 2 
 3 public class Person {
 4     private int id;
 5     private String name;
 6     private String sex;
 7     private int age;
 8     private String rank;
 9     private String department;
10     public int getId() {
11         return id;
12     }
13     public void setId(int id) {
14         this.id = id;
15     }
16     public String getName() {
17         return name;
18     }
19     public void setName(String name) {
20         this.name = name;
21     }
22     public String getSex() {
23         return sex;
24     }
25     public void setSex(String sex) {
26         this.sex = sex;
27     }
28     public int getAge() {
29         return age;
30     }
31     public void setAge(int age) {
32         this.age = age;
33     }
34     public String getRank() {
35         return rank;
36     }
37     public void setRank(String rank) {
38         this.rank = rank;
39     }
40     public String getDepartment() {
41         return department;
42     }
43     public void setDepartment(String department) {
44         this.department = department;
45     }
46     @Override
47     public String toString() {
48         return "Person [id=" + id + ", name=" + name + ", sex=" + sex + ", age=" + age + ", rank=" + rank
49                 + ", department=" + department + "]";
50     }
51     public Person(int id, String name, String sex, int age, String rank, String department) {
52         super();
53         this.id = id;
54         this.name = name;
55         this.sex = sex;
56         this.age = age;
57         this.rank = rank;
58         this.department = department;
59     }
60     public Person() {
61         super();
62     }
63     
64 }

4.5、測試程式碼

 1 package com.ft.dao;
 2 
 3 import java.io.IOException;
 4 import java.io.InputStream;
 5 
 6 import org.apache.ibatis.io.Resources;
 7 import org.apache.ibatis.session.SqlSession;
 8 import org.apache.ibatis.session.SqlSessionFactory;
 9 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
10 
11 import com.ft.entity.Person;
12 
13 public class Mybatistest {
14     public static void main(String[] args) throws IOException {
15         String resource = "mybatis-config.xml";
16         //讀取配置檔案
17         InputStream input = Resources.getResourceAsStream(resource);
18         //構建sqlSessionFactory
19         SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(input);
20         //獲取sqlSession
21         SqlSession session = sessionFactory.openSession();
22         try {
23              Person per = session.selectOne("MyMapper.selectperson", 1);
24              System.out.println(per);
25         } finally {
26             // TODO: handle finally clause
27             session.close();
28         }
29         
30         
31     }
32 }