首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

MyBatis 入門教程(一):從零搭建 MyBatis 3.4 環境並完成首次查詢

     編輯:Java 相關知識

MyBatis 簡介

前身 iBATIS,2010 年遷移至 Google Code 並更名。支持 SQL、存儲過程、高級映射,消除手動 JDBC 代碼,通過 XML 或註解將 POJO 映射至數據庫記錄。

環境搭建 6 步走

1. 引入依賴

  • mybatis-3.4.1.jar
  • 數據庫驅動(如 sqljdbc4.jar for SQL Server)

2. 核心配置 conf.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <properties resource="jdbc.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="userMapper.xml"/>
    </mappers>
</configuration>

3. 數據庫屬性 jdbc.properties

driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
url=jdbc:sqlserver://127.0.0.1;databaseName=test
username=sa
password=123456

4. Mapper 映射 userMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="hw.com.ser.IUser">
    <select id="queryUsers" resultType="hw.com.pojo.User">
        select * from MS_User
    </select>
    <select id="queryUserById" resultType="hw.com.pojo.User" parameterType="int">
        Select * From Ms_User Where id=#{id}
    </select>
</mapper>

關鍵:namespace 必須等於映射接口全限定名。

5. 映射接口 IUser.java

public interface IUser {
    List<User> queryUsers();
    User queryUserById(int id);
}

6. POJO User.java

標準 JavaBean,包含所有表字段及 getter/setter/toString。

工具類:SqlSessionFactoryUtil

public class SqlSessionFactoryUtil {
    private static SqlSessionFactory sqlSessionFactory;
    private static final Class CLASS_LOCK = SqlSessionFactoryUtil.class;

    public static SqlSessionFactory initSqlSessionFactory() {
        String resource = "conf.xml";
        try (InputStream is = Resources.getResourceAsStream(resource)) {
            synchronized (CLASS_LOCK) {
                if (sqlSessionFactory == null) {
                    sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
                }
            }
        } catch (IOException e) { throw new RuntimeException(e); }
        return sqlSessionFactory;
    }

    public static SqlSession openSqlSession() {
        if (sqlSessionFactory == null) initSqlSessionFactory();
        return sqlSessionFactory.openSession();
    }
}

測試驗證

public class UserTest {
    public static void main(String[] args) {
        try (SqlSession session = SqlSessionFactoryUtil.openSqlSession()) {
            IUser mapper = session.getMapper(IUser.class);
            List<User> users = mapper.queryUsers();
            users.forEach(System.out::println);
        }
    }
}

常見問題排查

  • namespace 與接口路徑不一致 → BindingException
  • 驅動類名錯誤 / URL 格式錯誤 → 連接失敗
  • POJO 字段與列名不匹配 → 結果為 null 或報錯,可用 <resultMap> 顯式映射
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved