MyBatis學習筆記---入門

MyBatis學習筆記

一、數據庫與數據表的創建

1.創建數據庫

create database thymeleaf;
use thymeleaf;

2.創建數據表

create table tb_user(
    -> id int not null auto_increment,
    -> name varchar(20),
    -> password varchar(50),
    -> email varchar(50),
    -> primary key(id)
    -> )engine=innodb default charset=utf8;

3.插入測試數據

insert into tb_user
    -> (name,password,email) 
    -> values('admin','admin','[email protected]');

二、創建Java項目

1.新建Java項目

2.在項目下創建User類,內容如下:

package com.sky.demo2.bean;
public class User {
    private Integer id;
    private String name;
    private String password;
    private String email;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", password='" + password + '\'' +
                ", email='" + email + '\'' +
                ", cg=" + cg +
                '}';
    }
    //省略其setter和getter方法
}

三、Mybatis入門

1.引入mybatis

要使用MyBatis,只需將mybatis-x.x.x.jar文件置於classpath中即可。如果使用Maven來構建項目,則需將下面的dependency代碼置於pom.xml文件中

<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis</artifactId>
  <version>x.x.x</version>
</dependency>

每個基於MyBatis的應用都是以一個SqlSessionFactory的實例爲中心的。

本次學習採用將mybatis-x.x.x.jar文件複製於classpath中,

在項目要根目錄下,創建lib目錄,將mybatis-3.4.6.jar和mysql-connector-java-5.1.44-bin.jar文件複製到該目錄下,並添加到構建路徑中。

2.創建mybatis-config.xml文件

每個基於 MyBatis 的應用都是以一個 SqlSessionFactory 的實例爲中心的。SqlSessionFactory 的實例可以通過 SqlSessionFactoryBuilder 獲得。而 SqlSessionFactoryBuilder 則可以從 XML 配置文件或一個預先定製的 Configuration 的實例構建出 SqlSessionFactory 的實例。

從 XML 文件中構建 SqlSessionFactory 的實例非常簡單,建議使用類路徑下的資源文件進行配置。

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>
    <properties resource="msqldatasource.properties"/>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <!--
        <mapper resource="com/sky/demo/dao/AccountMapper.xml" />
        -->
        <package name="com.sky.demo2.dao"/>
    </mappers>
</configuration>

其中properties,引入外部配置文件,該文件中主要配置數據庫的相關信息,內容如下:

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/thymeleaf
username=root
password=123456

datasource部分,配置數據庫的連接信息,從外部配置文件中取得

部分,配置Mapper映射文件的路徑,有兩種方式,一種是爲每一個Mapper文件配置,另一種是配置Mapper文件的包路徑。分別如下

<mapper resource="com/sky/demo/dao/AccountMapper.xml" />

<package name="com.sky.demo2.dao"/>

3.創建SqlSessionFactory,並從中獲取SqlSession

爲了實現該功能,採用工具類的方式實現,代碼如下

package com.sky.demo2.util;

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.IOException;
import java.io.InputStream;

public class DBUtil {
    private static SqlSessionFactory sqlSessionFactory;
    static{
        String resource="mybatis-config.xml";
        try {
            InputStream inputStream=Resources.getResourceAsStream(resource);
            sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static SqlSession getSession(){
        return sqlSessionFactory.openSession();
    }
}

通過該類的的靜態方法getSession()來獲取到SqlSession

4.採用接口的方式創建Mapper映射

首先,創建一個接口,接口內容如下:

package com.sky.demo2.dao;

import com.sky.demo2.bean.User;

import java.util.List;

public interface UserMapper {
    public User getUserById(int id);

    public List<User> getUserByClassId(int id);
}

其次,創建Mapper的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="com.sky.demo2.dao.UserMapper">
    <resultMap id="userMap" type="com.sky.demo2.bean.User">
        <id column="id" property="id"/>
        <result column="name" property="name"/>
        <result column="password" property="password"/>
        <result column="email" property="email"/>
    </resultMap>
    <select id="getUserById" resultMap="userMap">
      select * from tb_user where id = #{id}
    </select>

    <select id="getUserByClassId" resultMap="userMap">
        select * from tb_user where classid=#{id}
    </select>
</mapper>

四、利用mybatis訪問查詢數據

package com.sky.demo2;

import com.sky.demo2.bean.ClassAndGrade;
import com.sky.demo2.bean.User;
import com.sky.demo2.dao.ClassAndGradeMapper;
import com.sky.demo2.dao.UserMapper;
import com.sky.demo2.util.DBUtil;
import org.apache.ibatis.session.SqlSession;

import java.util.List;

public class Test2 {
    public static void main(String[] args) {
        UserMapper userMapper=session.getMapper(com.sky.demo2.dao.UserMapper.class);

        User user=userMapper.getUserById(1);
        System.out.println(user.toString());
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章