1. 程式人生 > >Mybatis學習記錄-----Mybatis入門(基本增刪改查方法)

Mybatis學習記錄-----Mybatis入門(基本增刪改查方法)

方便回顧和加強記憶,記錄一下mybatis的使用方法。mybatis的官網文件:http://www.mybatis.org/mybatis-3/zh/getting-started.html

Mybatis框架
Mybatis框架

目錄

1、建立資料庫

2、建立maven專案

3、匯入需要的依賴包

4、建立Mybatis配置檔案conf.xml

5、建立實體類

6、建立UserMapper.java

7、新增users表sql的對映檔案userMapper.xml

8、在conf.xml註冊userMapper.xml

9、建立SqlSessionFactory工具類

10、程式碼測試


 

1、建立資料庫

建立資料庫和表。

create database mybatis;
use mybatis;
CREATE TABLE c_user(id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(32), age INT);

2、建立maven專案

具體流程檢視IDEA建立基本maven專案

為了之後理解專案結構,提前把最終的目錄貼出來

 

3、匯入需要的依賴包

在pom.xml匯入mybatis和mysql的依賴包,這樣就不需要自己匯入包。

<?xml version="1.0" encoding="UTF-8"?>

<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>czz.study</groupId>
    <artifactId>mybatis</artifactId>
    <version>1.0-SNAPSHOT</version>

    <name>mybatis</name>
    <!-- FIXME change it to the project's website -->
    <url>http://www.example.com</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.7</maven.compiler.source>
        <maven.compiler.target>1.7</maven.compiler.target>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>

        <!--Mybatis依賴包-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.2</version>
        </dependency>

        <!--Mysql驅動包-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.46</version>
        </dependency>

        <!--junit測試依賴包-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
            <plugins>
                <plugin>
                    <artifactId>maven-clean-plugin</artifactId>
                    <version>3.0.0</version>
                </plugin>
                <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
                <plugin>
                    <artifactId>maven-resources-plugin</artifactId>
                    <version>3.0.2</version>
                </plugin>
                <plugin>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.7.0</version>
                </plugin>
                <plugin>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.20.1</version>
                </plugin>
                <plugin>
                    <artifactId>maven-jar-plugin</artifactId>
                    <version>3.0.2</version>
                </plugin>
                <plugin>
                    <artifactId>maven-install-plugin</artifactId>
                    <version>2.5.2</version>
                </plugin>
                <plugin>
                    <artifactId>maven-deploy-plugin</artifactId>
                    <version>2.8.2</version>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
</project>

4、建立Mybatis配置檔案conf.xml

XML 配置檔案(configuration XML)中包含了對 MyBatis 系統的核心設定,包含獲取資料庫連線例項的資料來源(DataSource)和決定事務作用域和控制方式的事務管理器(TransactionManager)。在src下建立一個conf.xml檔案,如下圖所示。這裡目前只添加了資料來源相關的配置(Mysql)。

<?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"/>
                <property name="username" value="root"/>
                <property name="password" value="Jovaunn1"/>
            </dataSource>
        </environment>
    </environments>

</configuration>

5、建立實體類

建立表對應實體類,並新增set/get/toString相關方法:

package czz.study.domain;

import java.io.Serializable;

public class User implements Serializable {
    
    private static final long serialVersionUID = 1L;
    
    /**
     * id  主鍵id
     */
    private Integer id;
    
    /**
     * name  名字
     */
    private String name;
    
    /**
     * age  年齡
     */
    private Integer age;
    
    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;
    }
    
    public Integer getAge() {
        
        return age;
    }
    
    public void setAge(Integer age) {
        
        this.age = age;
    }
    
    @Override
    public String toString() {
        
        return "User{" + "id=" + id + ", name='" + name + '\'' + ", age=" + age + '}';
    }
}

6、建立UserMapper.java

在mapper包內建立UserMapper.java,並新增需要的功能介面,現在只演示簡單的增刪改查功能。

package czz.study.mapper;

import czz.study.domain.User;
import org.apache.ibatis.annotations.Param;

public interface UserMapper {
    
    /**
     * 根據主鍵id查詢使用者資訊
     */
    User getUser(int id);
    
    /**
     * 新增使用者資訊
     */
    boolean insertUser(User user);
    
    /**
     * 更新主鍵id對應的使用者資訊
     */
    //@Param註解的作用是給引數命名,引數命名後就能根據名字得到引數值,正確的將引數傳入sql語句中 
    //如果不加,程式會出現找不到user異常
    boolean updateUser(@Param("id") int id, @Param("user") User user);
    
    /**
     * 刪除主鍵id對應的使用者資訊
     */
    boolean deleteUser(int id);
}

7、新增users表sql的對映檔案userMapper.xml

userMapper.xml包含UserMapper功能相關的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,namespace的值習慣上設定成包名+功能介面對映檔名,這樣就能夠保證namespace的值是唯一的
例如namespace="czz.study.Mapper.UserMapper"就是czz.study.Mapper(包名)+UserMapper
 -->
<mapper namespace="czz.study.mapper.UserMapper">

    <resultMap id="User" type="czz.study.domain.User">
        <id property="id" column="id" javaType="java.lang.Integer"></id>
        <result property="userName" column="name" javaType="java.lang.String"></result>
        <result property="age" column="age" javaType="java.lang.Integer"></result>
    </resultMap>


    <!--根據id查詢得到一個user物件-->
    <select id="getUser" parameterType="int" resultMap="User">
        select * from c_user where id = #{id}
    </select>
    <!--新增一個新的使用者-->
    <insert id="insertUser" useGeneratedKeys="true" keyProperty="id">
        insert into c_user (name,age) values (#{userName},#{age})
    </insert>
    <!--更新id對應的使用者資訊-->
    <update id="updateUser">
      update c_user set name=#{user.userName},age=#{user.age} where id=#{id}
    </update>
    <!--刪除id對應的使用者資訊-->
    <delete id="deleteUser" parameterType="int">
     delete from c_user where id=#{id}
    </delete>

</mapper>

8、在conf.xml註冊userMapper.xml

秩序在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>
    <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"/>
                <property name="username" value="root"/>
                <property name="password" value="Jovaunn1"/>
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <!--告知對映檔案方式1,一個一個的配置-->
        <mapper resource="mapperXml/userMapper.xml"/>

        <!-- 告知對映檔案方式2,自動掃描包內的Mapper介面與配置檔案
         注意:此種方法要求mapper介面名稱和mapper對映檔名稱相同,且放在同一個目錄中。-->
        <!--<package name="czz.study.mapper"/>-->
        
        <!--告知對映檔案方式3,一個一個的配置-->
        <!--注意:此種方法要求mapper介面名稱和mapper對映檔名稱相同,且放在同一個目錄中。-->
        <!--<mapper class="czz.study.mapper.UserMapper"/>-->
    </mappers>

</configuration>

9、建立SqlSessionFactory工具類

package czz.study.factory;

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.Reader;

public class MybatisFactory {
    
    public static SqlSessionFactory sessionFactory;
    
    static {
        try {
            //使用MyBatis提供的Resources類載入mybatis的配置檔案
            InputStream inputStream = Resources.getResourceAsStream("conf.xml");
            //構建sqlSession的工廠
            sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    /**
     * 獲取SqlSession
     */
    public static SqlSession getSession() {
        
        return sessionFactory.openSession();
    }
}

10、程式碼測試

在main方法中測試增刪改查功能

package czz.study;

import czz.study.domain.User;
import czz.study.factory.MybatisFactory;
import czz.study.mapper.UserMapper;
import org.apache.ibatis.session.SqlSession;

/**
 * Hello world!
 */
public class App {
    
    public static void main(String[] args) {
        
        SqlSession sqlSession = MybatisFactory.getSession();
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        
        User insertUser = new User();
        insertUser.setName("小花");
        insertUser.setAge(33);
        userMapper.insertUser(insertUser);
        sqlSession.commit();
        System.out.println("新增使用者id:" + insertUser.getId());
        System.out.println("----------------------------------------------------------------");
        User user = userMapper.getUser(insertUser.getId());
        System.out.println("查詢使用者資訊:" + user);
        System.out.println("----------------------------------------------------------------");
        User updateUser = new User();
        updateUser.setName("小黑");
        updateUser.setAge(44);
        userMapper.updateUser(insertUser.getId(), updateUser);

        System.out.println("查詢更新後的使用者資訊:" + userMapper.getUser(insertUser.getId()));
        sqlSession.commit();
        System.out.println("----------------------------------------------------------------");
        userMapper.deleteUser(insertUser.getId());
        sqlSession.commit();

        System.out.println("刪除使用者後查詢結果:" + userMapper.getUser(insertUser.getId()));
        sqlSession.close();

    }
}

以上,就是Mybatis最基本的用法,Mybatis其他功能和注意事項之後繼續補充。放上某一次執行的結果。