IDEA 配置 mybatis步驟(Maven)


建議在resources下配置接口的mapper類,並且和接口具有相同的路徑

1. 導入mybatis和mysql相關驅動

<!--導入相關依賴-->
        <!--lombok-->
        <dependencies>
          <dependency>
          <groupId>org.projectlombok</groupId>
          <artifactId>lombok</artifactId>
          <version>1.18.20</version>
          <scope>provided</scope>
        </dependency>

        <!--mysql驅動-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.17</version>
        </dependency>

        <!--mybatis驅動-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.2</version>
        </dependency>

        <!--junit單元測試-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>provided</scope>
        </dependency>

        <!--log4j依賴-->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
    </dependencies>

log4j配置文件

2. 配置 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>
        <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
        <property name="jdbc.url" value="jdbc:mysql://localhost:3306/demo1?useSSL=false&amp;useUnicode=true&amp;characterEncoding=utf-8&amp;serverTimezone=GMT"/>
        <property name="username" value="root"/>
        <property name="password" value="root"/>
    </properties>
    
    <settings>
        <!--Log4j 日志-->
        <setting name="logImpl" value="LOG4J"/>
        <!--駝峰命名對應數據庫下划線-->
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>

    <!--起別名,可以在mapper.xml的返回值/參數類型中用 alias 替換 type-->
    <!-- package可以在特定的路徑掃描包中的類,可以使用注解@Alias("XX")來替換類的全限定名,如果不用注解則默認小寫字母的類名-->
    <typeAliases>
        <!--<typeAlias type="com.c21w.pojo.User" alias="User"></typeAlias>-->
        <package name="com.c21w.pojo"/>
    </typeAliases>

    <!--多套環境 default可以默認選中哪套環境-->
    <environments default="development">
        <!--環境-->
        <environment id="development">
            <!--事務管理  默認 JDBC-->
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>

    <!--每一個mapper都需要在xml中注冊-->
    <!--package可以吧一個包內的全部xml文件導入,前提是xml文件和對應的接口在同一個包-->
    <mappers>
        <package name="com.c21w.dao"/>
        <!--<mapper resource="com/c21w/dao/Mapper/UserMapper.xml"></mapper>-->
    </mappers>
</configuration>

3. 創建mybatis工具類

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 Utils {

    private static SqlSessionFactory sqlSessionFactory = null;

    static{
        /*獲取 sqlSessionFactory 對象 */
        String resource = "mybatis-config.xml";
        InputStream inputStream = null;
        try {
            inputStream = Resources.getResourceAsStream(resource);
        } catch (IOException e) {
            e.printStackTrace();
        }
        sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    }

//    有了 SqlSessionFactory,我們可以從中獲得 SqlSession 的實例。SqlSession 提供了在數據庫執行 SQL 命令所需的所有方法。
//    你可以通過 SqlSession 實例來直接執行已映射的 SQL 語句
    public static SqlSession getSqlSession(){
        return sqlSessionFactory.openSession(false);
    }

    //傳入true可以默認開啟事務
    public static SqlSession getSqlSession(boolean bl){
        return sqlSessionFactory.openSession(bl);
    }
}

4. 編寫dao/mapper接口

//例子:

import com.c21w.pojo.User;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;
import java.util.Map;

public interface UserMapper {
    //查詢所有用戶信息
    List<User> getUserList();

    // 根據姓名查詢用戶
    User getUser(String name);

    // 添加一個用戶(多個參數列表可以使用注解)
    void addUser(@Param("name")String name,@Param("time") Date time, @Param("math")double math, @Param("eng")double english,@Param("sex") String sex);

    // 修改信息
    void updateUser(User user);
    // 多參數可以封裝為map
    void updateUser2(Map<String,Object> map);

    // 刪除
    void deleteUser(String name);
}

5. 創建mapper.xml

<!--例子:-->
<?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">
<!--namespace 綁定一個對於的 Dao/Mapper 接口-->
<mapper namespace="com.c21w.dao.UserMapper">
    <!--查詢語句-->
    <!--id對應方法名字-->
    <!--resultType對應返回值,集合的話對應泛型-->
    <select id="getUserList" resultType="User">
        select * from demo1_01
    </select>

    <select id="getUser" resultType="User" parameterType="String">
        select * from demo1_01 where name = #{name};
    </select>

    <!--使用@Param注解可以不用 parameterType-->
    <insert id="addUser">
        insert into demo1_01 value (#{name},#{time},#{math},#{eng},#{sex});
    </insert>
    
    <update id="updateUser" parameterType="User">
        update demo1_01 set math=#{math} where name=#{name}
    </update>
    <!--多參數封裝為 Map 集合,#{XX},XX為鍵的名字-->
    <update id="updateUser2" parameterType="map">
        update demo1_01 set math = #{mathed} where name = #{named};
    </update>

    <delete id="deleteUser" parameterType="java.lang.String" >
        delete from demo1_01 where name=#{name};
    </delete>
</mapper>

多對一和一對多查詢

6. 去 mybatis-config.xml中注冊Dao/Mapper接口(要用斜杠分割)

<!--例子:-->
<mappers>
    <mapper resource="com/c21w/dao/Mapper/UserMapper.xml"></mapper>
</mappers>

7. 去pom文件中配置文件加載的位置

<!--配置加載位置-->
    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.xml</include>
                    <include>**/*.properties</include>
                </includes>
                <filtering>true</filtering>
            </resource>
            <!-- 把 java 中的 xml 文件和 properties 文件 加載-->
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                    <include>**/*.properties</include>
                </includes>
                <filtering>true</filtering>
            </resource>
        </resources>
    </build>

8. 編寫運行

package com.c21w.dao;

import com.c21w.utils.Umybais;
import org.junit.Test;

public class UserMapperTest {

    @Test
    public void test(){
        Utils.getSqlSession().getMapper(UserMapper.class).getUserList()
                .stream().forEach(user -> System.out.println(user));
    }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM