1. 程式人生 > >mybatis快速入門查詢和介面查詢

mybatis快速入門查詢和介面查詢

什麼是 MyBatis ?

MyBatis 是一款優秀的持久層框架,它支援定製化 SQL、儲存過程以及高階對映。MyBatis 避免了幾乎所有的 JDBC 程式碼和手動設定引數以及獲取結果集。MyBatis 可以使用簡單的 XML 或註解來配置和對映原生資訊,將介面和 Java 的 POJOs(Plain Old Java Objects,普通的 Java物件)對映成資料庫中的記錄。

mybatis快速入門

           ① 建立一個java專案或者Web專案,如下圖

                                            

                ②匯入mysql的jar包,如圖

                                    

  ③開啟mysql建立資料庫表 

CREATE TABLE `user` (
  `id` int(11) NOT NULL DEFAULT '0',
  `name` varchar(20) COLLATE utf8_bin DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

④在src目錄下建立mysql.properties 裡面填資料庫連線的資訊 

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis
username=root
password=root

然後在src目錄下建立mybatis-conf.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">
<configuration>
<!--引入資料庫連線.properties  -->
<properties resource="mysql.properties"></properties>

<!-- default 選擇連線的資料庫 -->
  <environments default="development">
  
  <!--配置資料庫連線資訊  -->
    <environment id="development">
      <transactionManager type="JDBC"/>
      <!--dataSource   type 有三個屬性 ①UNPOOLED 不使用連線池的資料來源,即不使用快取   
      	 ②使用連線池 即使用快取  ③jndl 這個資料來源的實現是為了使用如 Spring 或應用伺服器
      	 這類的容器, 容器可以集 中或在外部配置資料來源,然後放置一個 JNDI 上下文的引用-->
      <dataSource type="UNPOOLED">
        <property name="driver" value="${driverClassName}"/>
        <property name="url" value="${url}"/>
        <property name="username" value="${username}"/>
        <property name="password" value="${password}"/>
      </dataSource>
    </environment>
  </environments>
  
  <!-- 註冊 xml檔案 -->
  <mappers>
    <mapper resource="com/hp/mapping/userMapping.xml"/>    
  </mappers>

  
</configuration>

⑤建立實體類 User 包名是com.hp.bean.User

package com.hp.bean;

public class User {

	private Integer id;
	private String name;
	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;
	}
	@Override
	public String toString() {
		return "USER [id=" + id + ", name=" + name + "]";
	}
	
}

    ⑥定義操作user表的sql對映檔案userMapper.xml 包名為com.hp.mapping.userMapping.xml

            內容如下

<?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.hp.mapping.userMapping">
    <!-- 
       根據id查詢得到一個user物件
     -->
   <select id="getUser" parameterType="Integer" 
        resultType="com.hp.bean.User">
       select * from user where id=#{id}
    </select>
    
    
</mapper>

    ⑦建立textDemo測試類

package com.hp.text;

import java.io.InputStream;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import com.hp.bean.User;

public class TextDemo {
public static void main(String[] args) {
	 //mybatis的配置檔案
    String resource = "mybatis-conf.xml";
    //使用類載入器載入mybatis的配置檔案(它也載入關聯的對映檔案)
    InputStream is = TextDemo.class.getClassLoader().getResourceAsStream(resource);
    //構建sqlSession的工廠
    SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
    //使用MyBatis提供的Resources類載入mybatis的配置檔案(它也載入關聯的對映檔案)
    //Reader reader = Resources.getResourceAsReader(resource); 
    //構建sqlSession的工廠
    //SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
    //建立能執行對映檔案中sql的sqlSession
    SqlSession session = sessionFactory.openSession();
    /**
     * 對映sql的標識字串,
     * me.gacl.mapping.userMapper是userMapper.xml檔案中mapper標籤的namespace屬性的值,
     * getUser是select標籤的id屬性值,通過select標籤的id屬性值就可以找到要執行的SQL
     */
    String statement = "com.hp.mapping.userMapping.getUser";//對映sql的標識字串
    //執行查詢返回一個唯一user物件的sql
    User user = session.selectOne(statement, 1);
    System.out.println(user);
}
}

執行效果為


第二種方式我們還可以 利用介面來進行查詢 比較方便

                   

        UserDao內容如下

package com.hp.dao;

import org.apache.ibatis.annotations.Select;

import com.hp.bean.User;

public interface UserDao {
	@Select("select * from user where id = #{id}")
	public User getOne(int id);

}

然後在mybatis-conf.xml 檔案中把下面內容註釋掉

    接下來在TextDemo測試中測試介面


效果圖為