1. 程式人生 > >MyBatis總結一:快速入門

MyBatis總結一:快速入門

version rac 文件 ctype group esp args select ransac

簡介

MyBatis 是一款優秀的持久層框架,它支持定制化 SQL、存儲過程以及高級映射。MyBatis 避免了幾乎所有的 JDBC 代碼和手動設置參數以及獲取結果集。MyBatis 可以使用簡單的 XML 或註解來配置和映射原生信息,將接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java對象)映射成數據庫中的記錄。

快速入門:

1,創建java項目,並引入相應的jar包 mysql,mybatis

技術分享圖片

<!--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>

2,使用MyBatis查詢數據庫信息(這裏提前準備好了數據庫的User表信息)

2.1,創建User對應的實體類

package com.zy.domain;

public class User {
    private int id;
    private String name;
    private int age;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        
this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "User{" + "id=" + id + ", name=‘" + name + ‘\‘‘ + ", age=" + age + ‘}‘; } }

2.2,在resources下面創建了如下的文件:

技術分享圖片

jdbc.properties(存放數據庫連接信息):

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/mybatisdb?useUnicode=true&characterEncoding=utf8&autoReconnect=true  &allowMultiQueries=true
jdbc.username=root
jdbc.password=root

UserMapper.xml(存放User的映射):

<?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">
<!--
    定義所有用到的sql語句 和 映射關系
    namespace : 當前這個配置文件的唯一標識, 自定義, 但是不能和其他配置文件namespace重復
-->
<mapper namespace="userMapper">
    <!--
        定義一條sql語句, 其實就是一個 statement
            select 代表是查詢語句, 與其類似的還有 insert, update, delete等
            id : 這條sql語句的唯一標識,自定義,但是不能和其他sql語句重復
            parameterType:  sql語句需要的參數類型, 需要寫 類的全路徑
            resultType: sql語句返回的結果類型
    -->
    <select id="getUserById" parameterType="int" resultType="com.zy.domain.User">
        <!--這裏寫具體的sql語句, #{}是占位符, 編譯時會被替換成?, 然後註入真實參數-->
        select * from user where id=#{id}
    </select>
</mapper>

mybatis-config.xml(配置數據庫信息,註冊mapper):

<?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 resource="jdbc.properties"/>

    <!--運行環境可以配置多個, default指定默認使用哪個-->
    <environments default="development">
        <!--配置環境, id是這個環境的唯一標識-->
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driverClassName}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>

    <!--註冊mapper文件-->
    <mappers>
        <mapper resource="UserMapper.xml"/>
    </mappers>
</configuration>

2.3,創建Test類 測試

package com.zy.test;

import com.zy.domain.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.InputStream;

public class Test01 {
    public static void main(String[] args) {
        //mybatis的配置文件
        String resource = "mybatis-config.xml";

        //使用MyBatis提供的Resources類 獲取輸出流  加載mybatis的配置文件
        //InputStream inputStream = Resources.getResourceAsStream(resource);

        //使用類加載器加載mybatis的配置文件(它也加載關聯的映射文件)
        InputStream inputStream = Test01.class.getClassLoader().getResourceAsStream(resource);
        //構建sqlsession工廠
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        //創建能執行映射文件中sql的sqlSession
        SqlSession sqlSession = sqlSessionFactory.openSession();
        // 執行statement, 需要指定兩個參數:
        // 1 確定哪個sql語句: mapper文件的namespace + sql語句的id
        // 2 sql語句需要的參數
        User user = sqlSession.selectOne("userMapper.getUserById", 1);
        System.out.println(user);
    }
}

最終運行結果:

技術分享圖片

MyBatis總結一:快速入門