MyBatis在Maven項目的導入與部分數據庫操作

入門MyBatis+Spring :Mybatis在maven項目的導入與數據庫操作

一、Mybatis簡介:

優點

sql和java編碼分開,功能邊界清晰,一個專注業務、一個專注數據

優點:

  1. 與JDBC相比,減少了50%以上的代碼量。
  2. MyBatis是最簡單的持久化框架,小巧並且簡單易學。
  3. MyBatis相當靈活,不會對應用程序或者數據庫的現有設計強加任何影響,SQL寫在XML裏,從程序代碼中徹底分離,降低耦合度,便於統一管理和優化,並可重用。
  4. 提供XML標籤,支持編寫動態SQL語句。
  5. 提供映射標籤,支持對象與數據庫的ORM字段關係映射。

二、maven項目的基本目錄結構:

新建maven項目目錄結構
main目錄存放開發代碼,test目錄存放測試代碼,pom.xml存放所有的項目依賴(查詢項目依賴:https://mvnrepository.com/)
注:引入依賴後在外部庫查看是否自動導入(很明顯此過程需要聯網環境進行)。

三、mybatis的主配置文件以及映射配置文件:

mybatis的主配置文件放在resources下,示例內容如下:

<?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>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <!-- 使用數據庫連接池 -->
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"//>
                <property name="url" value=""${url}"//>
                <property name="username" value="${username}"//>
                <property name="password" value="${password}"//>
            </dataSource>
        </environment>
    </environments>
    <!-- 映射配置文件的路徑 -->
    <mappers>
        <!--<mapper resource="org/mybatis/example/BlogMapper.xml"/>-->
        <mapper resource="mapper/usersMapper.xml"></mapper>
    </mappers>
</configuration>

顯然通過上面的代碼塊可以看出mybatis通過映射實體類對象和表來對數據庫操作。
那麼接着我們在resources下建立mapper文件夾,在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 命名空間
    通常情況,命名空間的值,就是當前操作實體類的全名稱-->
<mapper namespace="bin.User">
   <select id="userList" resultType="bin.User">
       select * from user_b
   </select>
    <select id="findUserByName" resultType="bin.User">
       select * from user_b where uname like '%${value}%'
   </select>
</mapper>

代碼塊有相關注釋,此處不再贅敘。

四、測試demo:

import bin.User;
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 java.io.IOException;
import java.io.InputStream;
import java.util.List;

public class TestDemo {

    @Test
    public void testDemo1() throws IOException {
        //初始化mybatis配置環境
        String resource = "mybatis.xml";
        InputStream ins = Resources.getResourceAsStream(resource);
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(ins);
        //打開和數據庫的會話
        SqlSession session = factory.openSession();
        List<User> list = session.selectList("findUserByName","p");
        for (User user:list
             ) {
            System.out.println(user);
        }
        session.close();
    }
}

五、mybatis的數據庫操作(部分)

1.查詢表中全部信息:

mapper下xml內容:

<select id="userList" resultType="包名.類名">
       select * from 表名
 </select>

調用時相關代碼:

List<User> list = session.selectList("findUserByName");

2.模糊查詢:

mapper下xml內容:

<select id="findUserByName" resultType="包名.類名">
       select * from 表名 where uname like '%${value}%'
 </select>

調用時相關代碼:

List<User> list = session.selectList("findUserByName","p");

注意:select標籤中對SQL語句的“${}”符號,表示拼接SQL串,將接收到的參數內容不加任何修飾地拼接在SQL中,在大括號中只能使用value代表其中的參數,然而在Web項目中,如果沒有防範SQL注入的機制,要謹慎使用此方式拼接SQL語句串,因爲可能會引起SQL注入的風險。

未完待續…

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