2018超直白入門demo:IDEA+Maven+MyBatis

用2018年最新版IDEA和mybatis配置mybatis,由於在網上找了大半天沒有找到合適我這個新手的資料,老是跑不起來,各類報錯,因此如今詳細記錄下一個超簡單的mybatis項目,這是從建立文件到找到第一條的數據的過程,貼上代碼,主要是一些在網上很難搜到的新人不知道的細節,用以方便本身和新人查漏補缺。java

這是github地址,能夠直觀地看目錄結構:github.com/qylcx7758/I…mysql

1、在網上不少大多的文件結構是這種,這是用maven建立的webapp項目,實際上單純的跑第一個項目根本不須要webapp,並且其中的POJO文件和resource文件夾都不是自動生成,而是本身建立的。git

(坑1:這也令我困惑了好久,怎麼找不到網上說的這種文件結構,下面是具體的文件介紹)github

2、建立項目模板:maven+quickstartweb

2.1 sql

坑2:java版本不要用jdk9以上的版本,一開始我用的jdk10就報錯,至於如何在IEDA裏面jdk切換成其餘版本,百度就行,網上有解決辦法;quickstart和webapp均可以,我這裏用的是quickstart模板。數據庫

坑3:建立項目名不要有破折號,否則會致使以後文件內建立不了Class類)。apache


2.2 maven的配置,都同樣,網上不少maven的教程。bash


3、初始配置session

3.1 在pom.xml文件內添加Mysql驅動和Mybatis依賴,而後點擊右下角的import。


<dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>6.0.6</version>
    </dependency>

    <!-- ********************** Mybatis依賴 ********************** -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.4.4</version>
    </dependency>
複製代碼

3.2 此時的初始文件結構以下,csdnMybatis這是個人項目名,這個項目結構都是自動生成的。


3.3 建立resource文件夾,注意與java文件夾同級,並設置爲Resources Root(意思大概是讓外面的java文件可以訪問到裏面的資源)

附:關於resource配置信息一不當心踩中其中某個坑,就會報Exception in thread "main" org.apache.ibatis......的錯誤。

(坑4:這個resource文件夾是本身建立的,並且要本身設置權限爲Resourcr Root,否則以後代碼會訪問不到xml配置文件,報錯)


4、以上幾乎是固定的,下面是配置文件信息,書寫resource文件夾內文件信息

4.1 在resource文件夾裏面建立兩個xml文件,此時文件結構以下:


4.2 在Mybatis-config這個mybatis配置文件下,寫下以下代碼:

<?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>

    <settings>
        <!--當返回行的全部列都是空時,MyBatis默認返回null-->
        <setting name="returnInstanceForEmptyRow" value="true"/>
    </settings>

    <environments default="development">

        <environment id="development">
            <!--使用了 JDBC 的提交和回滾設置,它依賴於從數據源獲得的鏈接來管理事務做用域-->
            <transactionManager type="JDBC"/>
            <!--使用數據池,複用實例-->
            <dataSource type="POOLED">
                <!--<property name="driver" value="com.mysql.jdbc.Driver"/>-->
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/test?serverTimezone=GMT%2B8"/>
                <property name="username" value="root"/>
                <property name="password" value="admin"/>
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <mapper resource="TableDAO.xml"></mapper>
    </mappers>
</configuration>複製代碼


這裏有四個須要注意的地方,

坑5:第一個標記好像是由於mysql版本太新了,須要將vaule="com.mysql.jdbc.Driver"改爲"com.mysql.jdbc.Driver",否則雖然一樣有結果,但會報紅:

第二個標記 test 表明了用戶的的數據庫,第三個標記分別是用戶名和密碼,

坑6:第四個標記對應了剛剛建立的TableDAO.xml文件。


4.3 在TableDAO.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">
<mapper  namespace="csdnMybatis">
    <select id="getWebsiteById" resultType="csdnMybatis.Twebsites">
        SELECT * FROM websites WHERE id = #{id};
    </select>

</mapper>複製代碼


這只是一個簡單的搜索語句,這裏也有好多坑,網上寫法太多了,但在這種環境下,我只實驗出了我這種寫法正確,有四個須要注意的地方,以後會用到,在個人例子裏面直接這樣子寫:

坑7: namespace="csdnMybatis"對應以後須要運行的文件(TestMybatis--以後建立的)所在的文件夾;(若是文件更深,可能就須要多層結構,但本示例不須要)

坑8: resultType=「csdnMybatis.Twebsites」對應以後建立的類名;

id="getWebsiteById"以後會用到,SQL語句中的websites對應所搜索的表名;



5、類文件和主體文件

5.1 在csdnMybatis下建立兩個文件,位置對應4.3的寫法,此時所有的文件結構以下:


5.2 在Twebsite文件內,寫以下代碼:

(沒必要要寫徹底表的字段名,寫幾個簡單的就行)

package csdnMybatis;

public class Twebsites {
    private int id;
    private String name;


    public int getId(){ return id;}
    public void setId(int id){this.id=id;}
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}複製代碼

表的內容以下,隨便一個含id和name兩個字段的表都能用這段代碼:


5.3 主體文件,也就是在運行的文件內寫以下代碼,便可:

package csdnMybatis;

import java.io.IOException;
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 TestMybatis {
    public static void main(String[] args) throws IOException {
        String resource = "Mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        SqlSession session = sqlSessionFactory.openSession();

        Twebsites c=  session.selectOne("getWebsiteById",2);
        System.out.println(c.getName());

        session.commit();
        session.close();
    }
}複製代碼

5.4 以後可能會報錯


這就須要配置下運行路徑



運行結果,無報錯


6、新學JAVA,寫了2小時多點,這只是一個IDEA+MAVEN運行Mybatis的簡單項目,若是運行不了我上述的簡單項目或者有不對的地方,歡迎評論。關於排版,若是有須要我會從新排下。

相關文章
相關標籤/搜索