Mybatis_day01

一、概念


1.Mybatis是優秀的持久層框架,對jdbc操作數據庫的過程進行了封裝,使開發者只需要關注sql本身;程序員只需要通過配置來進行設置


二、JDBC存在的問題


1.數據庫連接創建,釋放頻繁造成資源浪費

2.sql語句在代碼中硬編碼

3.使用preparedStatement佔位符號參數存在硬編碼

4.結果集存在硬編碼

三、Mybatis結構


四、使用步驟

1.導包

(1)Mybatis核心包

(2)Mybais依賴包

(3)數據庫驅動包

(4)創建核心配置文件SqlMapConfig.xml

(5)創建Mapper.xml文件

具體代碼如下:

                //加載核心配置文件
		InputStream inputStream = Resources.getResourceAsStream("SqlMapConfig.xml");
		//創建一個SqlSessionFactory工廠
		SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
		//創建SqlSession
		SqlSession sqlSession = sessionFactory.openSession();
		//執行sql語句
創建SqlMapConfig.xml文件:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
<?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:命名空間,用於隔離sql,還有一個很重要的作用,後面會講 -->
<mapper namespace="test">
    <!--通過id查詢一個用戶 mybatis裏面#{}代表佔位符 -->
    <select id="findUserById" parameterType="Integer" resultType="com.sgr.bean.User">
        select * from user where id = #{v}
    </select>
    <!--#{}表示的是佔位符 ,變量名任意
    	${}表示字符串拼接,兩邊不需要單引號,變量名字只能是value
    -->
    <select id="findUserByName" parameterType="String" resultType="com.sgr.bean.User">
        select * from user where username like '%${value}%'
    </select>
    <insert id="insertUser" parameterType="com.sgr.bean.User">
        <selectKey keyProperty="id" resultType="Integer" order="AFTER">
            select LAST_INSERT_ID()
        </selectKey>
        insert into user (username,birthday,address,sex) 
        values (#{username},#{birthday},#{address},#{sex})
    </insert>
    
    <update id="updateUserById" parameterType="com.sgr.bean.User">
        update user
        set username=#{username},sex=#{sex},birthday=#{birthday},address=#{address}
        where id=#{id}
    </update>
    
    <delete id="deleteUserById" parameterType="Integer">
        delete from user where id=#{id}
    </delete>
</mapper>


<?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:命名空間,用於隔離sql,還有一個很重要的作用,後面會講 -->
<mapper namespace="test">
    <!--通過id查詢一個用戶 mybatis裏面#{}代表佔位符 -->
    <select id="findUserById" parameterType="Integer" resultType="com.sgr.bean.User">
        select * from user where id = #{v}
    </select>
    <!--#{}表示的是佔位符 ,變量名任意
        ${}表示字符串拼接,兩邊不需要單引號,變量名字只能是value
    -->
    <select id="findUserByName" parameterType="String" resultType="com.sgr.bean.User">
        select * from user where username like '%${value}%'
    </select>
    <insert id="insertUser" parameterType="com.sgr.bean.User">
        <selectKey keyProperty="id" resultType="Integer" order="AFTER">
            select LAST_INSERT_ID()
        </selectKey>
        insert into user (username,birthday,address,sex) 
        values (#{username},#{birthday},#{address},#{sex})
    </insert>
    
    <update id="updateUserById" parameterType="com.sgr.bean.User">
        update user
        set username=#{username},sex=#{sex},birthday=#{birthday},address=#{address}
        where id=#{id}
    </update>
    
    <delete id="deleteUserById" parameterType="Integer">
        delete from user where id=#{id}
    </delete>
</mapper>








發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章