首頁 > 後端開發 > php教程 > Mybatis的使用(mapper介面方式)

Mybatis的使用(mapper介面方式)

赶牛上岸
發布: 2023-03-20 20:24:02
原創
7036 人瀏覽過

使用 Mapper 介面的方式,不用寫介面實作類,直接完成資料庫操作,簡單方便。 為了幫助大家更學習Mapper接口,小編總結了一些關於Mapper接口的知識點,希望能夠幫助到有需要的人。

先上結構圖:
Mybatis的使用(mapper介面方式)
下面是具體的程式碼:
一、User.java

实体类中的的get/set方法以及构造方法及toString方法就不贴了
public class User {    
    private int id;    
    private String name;    
    private int age;
}
登入後複製

二、UserMapper.java
這是mapper接口,面向介面程式設計的想法還是很重要的。也是本次部落格文章最重要的部分。

介面定義有以下特點:

  1. Mapper 介面方法名稱和 UserMapper.xml 中定義的每個 sql 的 id 同名。

  2. Mapper 介面方法的輸入參數類型和 UserMapper.xml 中定義的 sql 的parameterType 類型相同。

  3. Mapper 介面的回傳類型和UserMapper.xml 中定義的sql 的resultType 類型相同

##注意建立表格的方法,有註解@Param

package com.mi.mapper;import org.apache.ibatis.annotations.Param;import com.mi.beans.User;public interface UserMapper {
    void createTable (@Param("tableName") String tableName);    void add(User user);    void del(int id);    void update(User user);
    User getUser(int id);
    User[] list();
}
登入後複製
登入後複製

三、userMappers.xml
這裡要注意 1.xml檔案的namespace要寫成mapper接口的路徑,像下面.

<mapper namespace="com.mi.mapper.UserMapper">
登入後複製
登入後複製

2.在寫動態建立表格的語句時,要寫成${tableName},而不是#{}. 點擊查看兩者的差異

create table ${tableName}...
登入後複製

以下是完整程式碼:包括建立表格、CRUD

<mapper namespace="com.mi.mapper.UserMapper">
    
    
        create table ${tableName} (id int primary key auto_increment,name varchar(20),age int)    
    
    
        insert into t_user(name,age) value(#{name},#{age})    
    
    
        delete from t_user where id = #{id}    
    
    
        update t_user set name=#{name},age=#{age} where id=#{id}    
    
    
    
    
登入後複製

四、conf.xml 這裡需要配置兩個東西

    ##配置JDBC的連線
  • 設定mapper.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="root" />
                </dataSource>
            </environment>
        </environments>
            <!-- 注册userMapper.xml文件 -->
        <mappers>
            <mapper resource="com/mi/mapping/userMappers.xml"/>
        </mappers></configuration>
    登入後複製
五、SqlSessionUtil.java

我在這裡寫了一個工具類別,主要目的是要拿到sqlSession,因為之後每次操作資料庫都需要寫一遍,所以進行一次封裝.

package com.mi.util;import java.io.InputStream;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.
session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;public class SqlSessionUtil 
{
      public static SqlSession getSqlSession() throws Exception{
      String resource = "conf.xml";
      //使用类加载器加载mybatis的配置文件(它也加载关联的映射文件)
      InputStream is = Resources.getResourceAsStream(resource);
      //构建sqlSession的工厂
      SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
      //创建能执行映射文件中sql的sqlSession
      SqlSession sqlSession = sessionFactory.openSession();
      return sqlSession;
   }
}
登入後複製

六、MyTest.java

#這是測試類別,透過上面的工具類別sqlSession,最關鍵的是下面這句

UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
登入後複製
登入後複製

MyBatis透過動態代理的方式實作mapper介面

,之後就好辦了,執行介面中準備好的方法就可以了。 注意不要忘了sqlSession.commit()和sqlSession.close().否則在執行過程中雖然不會報錯,但是資料庫中是不會有變化的.

这里我只执行了创建表的方法.
package com.mi.test;import org.apache.ibatis.session.SqlSession;import com.mi.beans.User;import com.mi.mapper.UserMapper;
import com.mi.util.SqlSessionUtil;public class MyTest {
    public static void main(String[] args) throws Exception {
        SqlSession sqlSession = SqlSessionUtil.getSqlSession();
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        userMapper.createTable("t_user");
        sqlSession.commit();
        sqlSession.close();
    }
}
登入後複製
登入後複製
           

使用Mapper 介面的方式,不用寫入介面實作類,直接完成資料庫操作,簡單方便。

先上結構圖:



下面是具體的程式碼:Mybatis的使用(mapper介面方式)
一、User.java

实体类中的的get/set方法以及构造方法及toString方法就不贴了public class User {    private int id;    private String name;    private int age;
登入後複製

#二、UserMapper .java

這是mapper接口,面向介面程式設計的想法還是很重要的。也是本次部落格文章最重要的部分。

介面定義有以下特點:

    Mapper 介面方法名稱和 UserMapper.xml 中定義的每個 sql 的 id 同名。
  1. Mapper 介面方法的輸入參數類型和 UserMapper.xml 中定義的 sql 的parameterType 類型相同。
  2. Mapper 介面的回傳類型和UserMapper.xml 中定義的sql 的resultType 類型相同
  3. ##注意建立表格的方法,有註解@Param

package com.mi.mapper;import org.apache.ibatis.annotations.Param;import com.mi.beans.User;public interface UserMapper {
    void createTable (@Param("tableName") String tableName);    void add(User user);    void del(int id);    void update(User user);
    User getUser(int id);
    User[] list();
}
登入後複製
登入後複製
三、userMappers.xml

這裡要注意
1.xml檔案的namespace要寫成mapper接口的路徑,像下面.

<mapper namespace="com.mi.mapper.UserMapper">
登入後複製
登入後複製
2.在寫動態建立表格的語句時,要寫成${tableName},而不是#{}. 點擊查看兩者的差異
create table ${tableName}...
登入後複製

以下是完整程式碼:包括建立表格、CRUD

<mapper namespace="com.mi.mapper.UserMapper">
    
    
        create table ${tableName} (id int primary key auto_increment,name varchar(20),age int)    
    
    
    
        insert into t_user(name,age) value(#{name},#{age})    
    
    
    
        delete from t_user where id = #{id}
     
    
    
        update t_user set name=#{name},age=#{age} where id=#{id}    
    
    
    
    
    
登入後複製

四、conf.xml

這裡需要配置兩個東西
##配置JDBC的連線

  • 設定mapper.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="root" />
                </dataSource>
            </environment>
        </environments>
            <!-- 注册userMapper.xml文件      -->
        <mappers>
            <mapper resource="com/mi/mapping/userMappers.xml"/>
        </mappers></configuration>
    登入後複製

    五、SqlSessionUtil.java
我在這裡寫了一個工具類別,主要目的是要拿到sqlSession,因為之後每次操作資料庫都需要寫一遍,所以進行一次封裝.

package com.mi.util;import java.io.InputStream;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;public class SqlSessionUtil 
{
      public static SqlSession getSqlSession() throws Exception{
        String resource = "conf.xml";
         //使用类加载器加载mybatis的配置文件(它也加载关联的映射文件)
        InputStream is = Resources.getResourceAsStream(resource);
        //构建sqlSession的工厂
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
      //创建能执行映射文件中sql的sqlSession
        SqlSession sqlSession = sessionFactory.openSession();
        return sqlSession;
    }
}
登入後複製
六、MyTest.java

#這是測試類別,透過上面的工具類別sqlSession,最關鍵的是下面這句

UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
登入後複製
登入後複製
MyBatis透過動態代理的方式實作mapper介面
,之後就好辦了,執行介面中準備好的方法就可以了。

注意不要忘了sqlSession.commit()和sqlSession.close().否則在執行過程中雖然不會報錯,但是資料庫中是不會有變化的.

这里我只执行了创建表的方法.
package com.mi.test;import org.apache.ibatis.session.SqlSession;import com.mi.beans.User;import com.mi.mapper.UserMapper;
import com.mi.util.SqlSessionUtil;public class MyTest {
    public static void main(String[] args) throws Exception {
        SqlSession sqlSession = SqlSessionUtil.getSqlSession();
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        userMapper.createTable("t_user");
        sqlSession.commit();
        sqlSession.close();
    }
}
登入後複製
登入後複製

相關推薦:mybatis分頁外掛pageHelper實例詳解

Oracle結合Mybatis實作取表的10個資料

#

Spring Boot 、 Mybatis 、 Redis快速建置現代化Web專案


#

以上是Mybatis的使用(mapper介面方式)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板