1.MyBatis的HelloWorld

總結

1.接口式編程,不需要實現類
 原生: DAO ===> DAOImpl
 mybatis:Mapper ===>XXMapper.xml
2. SqlSession代表和數據庫的一次會話,用完必須關閉
3. SqlSession和Connection一樣是非線程安全的,每次使用都應該獲取新的對象那個
4. mapper接口沒有實現類,但是mybatis會爲這個接口生成一個代理對象(將接口與xml綁定)
5. 兩個重要的配製文件
 mybatis的全局配製文件,包含數據庫連接池,事務管理器等
 sql映射文件,保存了每一個sql語句的映射信息

在這裏插入圖片描述

1. 創建數據庫,並添加一條記錄

CREATE TABLE tbl_employee( 
	id INT(11) PRIMARY KEY AUTO_INCREMENT, 
	last_name VARCHAR(255), 
	gender CHAR(1), 
	email VARCHAR(255) 
); 
INSERT INTO tbl_employee(last_name, gender,email) VALUES('tom','0','[email protected]');
SELECT * FROM tbl_employee;`id``gender``email``tbl_employee`

結果:
在這裏插入圖片描述

2.創建Maven工程

2.1添加依賴

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>njupt</groupId>
  <artifactId>MyBatis</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <dependencies>
    <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
	<dependency>
	    <groupId>org.mybatis</groupId>
	    <artifactId>mybatis</artifactId>
	    <version>3.5.2</version>
	</dependency>
	
	  <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.17</version>
    </dependency>
  </dependencies>
</project>

2.2新建一個對應數據庫的javaBean類

包名:com.njupt.bean
類名:Employee

package com.njupt.bean;

public class Employee {
    private Integer id;
    private String lastName;
    private String gender;
    private String email;
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getLastName() {
        return lastName;
    }
    public void setLastName(String lastName) {
        this.lastName = lastName;
    }
    public String getGender() {
        return gender;
    }
    public void setGender(String gender) {
        this.gender = gender;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    @Override
    public String toString() {
        return "Employee [id=" + id + ", lastName=" + lastName + ", gender=" + gender + ", email=" + email + "]";
    }
    
}

2.3在resources目錄下新建一個mybatis配製文件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">   
<configuration>
	<environments default="development">
		<environment id="development">
			<transactionManager type="JDBC" />
			<dataSource type="POOLED">
				<property name="driver" value="com.mysql.jdbc.Driver" />
				<property name="url" value="jdbc:mysql://localhost:3306/mybatis?useUnicode=true&amp;characterEncoding=UTF-8&amp;serverTimezone=Asia/Shanghai" />
				<property name="username" value="root" />
				<property name="password" value="root" />
			</dataSource>
		</environment>
	</environments>
	<!-- 將寫好的sql映射文件註冊到全局配置文件中 -->
	<mappers>
	   <mapper resource="employeeMapper.xml"/>
	</mappers>
</configuration>

2.4 新建一個接口,並定義部分函數,這些函數對應於sql語句的功能

package com.njupt.Mapper;

import com.njupt.bean.Employee;

public interface EmployeeMapper {
    public Employee getEmployeeById(Integer id);
}

2.5 在resources目錄下新建一個sql映射文件employeeMapper.xml

namespace:接口的全類名
id:該sql語句的標識符,對應於接口的方法名
resultType:返回值類型,用於判斷,查詢得到的結果封裝成哪個bean的對象

<?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">
<!-- 
  namespace:接口的全類名
  id:該sql語句的標識符,對應於接口的方法名
  resultType:返回值類型,用於判斷,查詢得到的結果封裝成哪個bean的對象
 -->
<mapper namespace="com.njupt.Mapper.EmployeeMapper">
	<select id="getEmployeeById" resultType="com.njupt.bean.Employee">
	   select id,last_name AS lastName, gender, email from tbl_employee where id=#{id}
	</select>
</mapper>

2.6 測試方法

    @Test
    public void test2() throws IOException {
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        //1.獲取sqlSessionFactory對象
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        //2.獲取SqlSession對象那個
        try (SqlSession session = sqlSessionFactory.openSession()) {
            //3.獲取接口的實現類對象
            //會爲接口自動創建一個代理對象,代理對象執行對應的方法
            EmployeeMapper mapper = session.getMapper(EmployeeMapper.class);
            Employee employ = mapper.getEmployeeById(1);
            System.out.println(employ);
            }
    }

結果
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章