91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mybatis介紹與環境搭建

發布時間:2020-07-21 01:02:51 來源:網絡 閱讀:382 作者:xmgdc 欄目:數據庫

一、不用純jdbc的原因,即缺點。

1、數據庫理解,使用時創建,不用時釋放,會對數據庫進行頻繁的鏈接開啟和關閉,造成數據庫的資源浪費,影響數據庫的性能。
設想:使用數據庫的連接池。
2、將sql語句硬編碼到java代碼中,不利于系統維護。
設想:將sql放到配置文件中。
3、向preparedstatement中設置參數,對占位符位置和設置參數值,硬編碼在Java代碼中,不利于系統維護。
設想:將sql語句及占位符配置到xml中。
4、從resultset中便利結果集時,存在硬編碼,將獲取表的字段進行硬編碼,不利于系統維護。
設想;將結果集,自動映射成Java對象

二、mybatis是什么

1、mybatis讓程序員將主要精力放在sql上,通過mybatis提供的映射方式,自由靈活生成滿足需要的sql語句。
2、mybatis可以將輸入參數自動映射,可以將結果集映射為Java對象,并且sql相對自由,不想hibernate那樣看不到sql。
3、mybatis需要一個SqlMapConfig.xml,它是mybatis的全局配置文件,其中包括了數據庫連接池,配置了數據源、事務等。
4、還需要一個SQLMap配置文件,它配置了映射關系(配置sql語句),sql語句要寫在這個配置文件里,其實就是配置了一個statement,避免了sql語句硬編碼到Java源文件中。后面會詳細介紹這個配置文件的使用。
5、SqlsessionFactory是mybatis中生成Sqlsession的工廠,操作數據庫。
mybatis框架結構是把sql語句的映射文件加載到SQLMapConfig中去,然后SqlSessionFactory加載SQLMapConfig后生成SQLSession,SQLSession來執行Statement。

三、構建一個mybatis工程。

1.所需要的jar包

mybatis介紹與環境搭建

即需要下載mybatis包和數據庫驅動包,可以從GitHub上下載mybatis,解壓后里面有lib文件夾和一個mybatis的核心包,lib中得包是mybatis的依賴包

mybatis的下載

2.工程結構。

mybatis介紹與環境搭建

src中放源碼,lib中放所依賴的jar包,config中放各種配置文件,config文件下的sqlmap包中放sql映射文件。lib和config文件夾創建好后要記得郵件選擇build path->use a source folder

 3.編寫log4j.properties

mybatis介紹與環境搭建

# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# MyBatis logging configuration...
log4j.logger.org.mybatis.example.BlogMapper=TRACE
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

mybatis介紹與環境搭建

 

 注意:開發時log4j.rootLogger=DEBUG,生產環境可以把DEBUG換成info

4.編寫SqlMapConfig.xml

 

mybatis介紹與環境搭建

<?xml version="1.0" encoding="UTF-8" ?>   
    <!DOCTYPE configuration
     PUBLIC "-//mybatis.org//DTD Confi 3.0//EN"
    "http://www.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/mybatisTest?characterEncoding=utf-8" />  
                    <property name="username" value="root" />  
                    <property name="password" value="123456" />  
                </dataSource>  
            </environment>  
        </environments>
        <mappers>
        <mapper resource="sqlmap/user.xml"/>
      </mappers> 
    </configuration>

mybatis介紹與環境搭建

 

 

 

 <mappers>中包括的是針對每個對象的sql映射文件,environment標簽中配置的是數據源,需要變動的只有這兩個地方。

5.編寫user.xml

mybatis介紹與環境搭建

<?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對應一個dao -->
<mapper namespace="test">
    <select id="srarchByid" parameterType="int" resultType="entity.users">
        select * from users where id=#{id}
    </select>
    <select id="searchByName" parameterType="String" resultType="entity.users">
        select * from users where name like '%${value}%'
    </select>
    <insert id="insertUser" parameterType="entity.users">
        insert into users(name,birthday,address,sex) values(#{name},#{birthday},#{address},#{sex})
        <selectKey keyProperty="id" order="AFTER" resultType="int">
            select last_insert_id()
        </selectKey>
    </insert>
    <delete id="deleteUser" parameterType="java.lang.Integer">
        delete from users where id=#{id}
    </delete>
    <update id="updateUser" parameterType="entity.users">
        update users set name=#{name},address=#{address},birthday=#{birthday},sex=#{sex} where id=#{id}
    </update>

</mapper>

mybatis介紹與環境搭建

 

 這里共寫了查詢,插入,刪除,更新四個sql語句,都用對應的標簽包裹起來,每一個標簽最后會映射為一個statement,標簽中的屬性id是此statement的唯一標示,以后再Java中就是通過這個id來調用的。parameterType表示輸入參數,類似于在jdbc的預編譯時為占位符賦值時的參數類型。

resultType是數據庫返回結果對應的pojo類的類型。

<selectKey>標簽是用來返回主鍵的,當插入一條記錄后向立馬得到這條記錄的id就要加上這個標簽,其中keyProperty屬性標示的是實體類的主鍵屬性,order表示此查詢是在插入前執行還是插入后執行,resultType是查詢的結果類型

6.創建一個實體類對應數據庫,因為比較簡單,此處不再給出代碼

7.用Junit來測試。

mybatis介紹與環境搭建

package mt;import java.io.IOException;import java.io.InputStream;import java.util.Date;import java.util.List;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 org.junit.Test;import entity.Classes;import entity.users;public class FirstDemo {
    @Test    public void findUserbyIdTest(){        
        try {
            String resource="SqlMapConfig.xml";
            InputStream stream=Resources.getResourceAsStream(resource);
            SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(stream);
            SqlSession sqlSession=sqlSessionFactory.openSession();
            users u=sqlSession.selectOne("test.srarchByid", 1);
            System.out.println(u.getBirthday().toString());
            sqlSession.close();
            
        } catch (IOException e) {            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    @Test    public void findUserByName(){        try {
            String resource="SqlMapConfig.xml";
            InputStream stream=Resources.getResourceAsStream(resource);
            SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(stream);
            SqlSession sqlSession=sqlSessionFactory.openSession();
            List<users> u=sqlSession.selectList("test.searchByName", "張");
            sqlSession.close();
        } catch (IOException e) {            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        
    }
    @Test    public void insertUser(){        try {
            String resource="SqlMapConfig.xml";
            InputStream stream=Resources.getResourceAsStream(resource);
            SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(stream);
            SqlSession sqlSession=sqlSessionFactory.openSession();
            users u=new users();
            u.setName("王磊");
            u.setSex("f");
            u.setBirthday(new Date());
            u.setAddress("上海");
            sqlSession.insert("test.insertUser", u);
            System.out.println(u.getId());
            sqlSession.commit();
            sqlSession.close();
        } catch (IOException e) {            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    
    @Test    public void deleteUser(){        try {
            String resource="SqlMapConfig.xml";
            InputStream stream=Resources.getResourceAsStream(resource);
            SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(stream);
            SqlSession sqlSession=sqlSessionFactory.openSession();
            sqlSession.insert("test.deleteUser",2);
            sqlSession.commit();
            sqlSession.close();
        } catch (IOException e) {            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    @Test    public void updateUser(){        try {
            String resource="SqlMapConfig.xml";
            InputStream stream=Resources.getResourceAsStream(resource);
            SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(stream);
            SqlSession sqlSession=sqlSessionFactory.openSession();
            users u=new users();
            u.setId(3);
            u.setName("王磊");
            u.setSex("f");
            u.setBirthday(new Date());
            u.setAddress("上海66666");
            sqlSession.update("updateUser",u);
            System.out.println(u.getId());
            sqlSession.commit();
            sqlSession.close();
        } catch (IOException e) {            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

mybatis介紹與環境搭建

 


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

东乡县| 建湖县| 清新县| 阿克陶县| 旬邑县| 涿鹿县| 东方市| 海晏县| 潮州市| 远安县| 丹阳市| 贵州省| 安溪县| 小金县| 东台市| 金昌市| 黄冈市| 玛曲县| 印江| 浦北县| 福建省| 金堂县| 二手房| 利津县| 平舆县| 曲靖市| 西贡区| 辽宁省| 廉江市| 新邵县| 浦江县| 亳州市| 安平县| 灵丘县| 尼玛县| 云南省| 台山市| 怀柔区| 祁连县| 新化县| 新营市|