說說個人Mybatis學習記

前不久學完java基礎,給本身安排的下一階段的學習內容是框架Mybatis。說實話,還沒開始學習Mybatis時,個人內心已經有點恐懼了,一是以爲本身java基礎掌握的不夠紮實,二是像Mybatis這樣的框架還有不少,到底什麼時候才能學到頭。仍是學學試試看吧
Mybatis簡介:Mybatis在JDBC的基礎上進行了封裝,可以簡化操控數據庫的代碼量。同時把java語句與sql語句分離開來,可使開發者專一於業務邏輯的實現。下面咱們來講一下怎麼照葫蘆畫瓢實現經過Mybatis查詢數據庫中的數據表。
pom.xml:首先新建一個maven項目,在pom.xml文件組中導入所需的jar包。有mybatis包、Mysql數據庫鏈接包、日誌包log4j、單元測試junit。java

<packaging>jar</packaging>
    <dependencies>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.5</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.19</version>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.12</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
    </dependencies>

主配置文件SqlConfig.xml: 咱們想用java程序控制sql語句對數據庫進行操做,同時又想把sql語句獨立出來,也要可以鏈接數據庫的配置信息。解決思路是在一個文件中放入數據庫配置信息,同時該文件又能搜索到書寫sql語句的文件。能夠看到該文件起到鏈接其它文件的做用,把該文件稱爲主配置文件。mysql

<environments default="mysql">
        <environment id="mysql">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <property name="driver"  value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>
    <!--配置映射文件的位置-->
    <mappers>
        <!--<mapper resource="com/itheima/dao/IUserDao.xml"></mapper>-->
        <package name="com.itheima.dao"/>
    </mappers>

User類:該類的成員變量與數據表的列名一一對應,是用來封裝數據表的。
代理類IUserDao:爲了在對數據庫進行操做的方法不寫sql語句,咱們使用代理類來執行對數據庫的操做。代理類就是一個接口類,其中有一些未實現的對數據庫進行操做的方法。sql

public interface IUserDao {
    List<User> findAll();
    /**
     * 保存方法
     * @param user
     */
    void saveUser(User user);

    /**
     * 更新用戶
     * @param user
     */
    void updateUser(User user);

sql腳本配置文件IUserDao.xml:在該文件中寫sql語句。測試類在調用IUserDao接口中的方法時,要可以實現對數據庫的操做,因此這要求(1)可以識別對應的sql配置文件(2)而且找到須要的sql語句。sql配置文件名與IUserDao接口名一致可實現(1),sql配置文件中鍵id可實現sql語句與方法的對應。通常還需用鍵指明sql執行的結果封裝到哪一個對象,傳入sql的數據類型。數據庫

<!--查詢全部-->
    <select id="findAll" resultType="user">
        select * from user
    </select>

    <!--保存用戶-->
    <insert id="saveUser" parameterType="com.itheima.domain.User">
        insert into user(username,address,sex,birthday)values(#{username},#{address},#{sex},#{birthday});
    </insert>

測試類MybatisTest:
`public class MybatisTest {session

public static void main(String[] args)throws Exception {
    //1.讀取配置文件
    InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
    //2.建立SqlSessionFactory工廠
    SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
    SqlSessionFactory factory = builder.build(in);
    //3.使用工廠生產SqlSession對象
    SqlSession session = factory.openSession();
    //4.使用SqlSession建立Dao接口的代理對象
    IUserDao userDao = session.getMapper(IUserDao.class);
    //5.使用代理對象執行方法
    List<User> users = userDao.findAll();
    for(User user : users){
        System.out.println(user);
    }
    //6.釋放資源
    session.close();
    in.close();
}

}`mybatis

相關文章
相關標籤/搜索