mybatis入門程式:mybatis根據使用者名稱稱模糊查詢使用者資訊

悲風天涯發表於2020-10-02

根據使用者名稱稱模糊查詢使用者資訊

1、在對映檔案中配置SQL語句

<?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進行分類化管理,理解為SQL的隔離-->
<mapper namespace="test">
	<!--根據使用者name模糊查詢使用者-->
    <select id="findUserByName" parameterType="String" resultType="edu.tjut.pojo.User">
        SELECT * FROM user WHERE username LIKE '%${value}%'
    </select>
</mapper>

其中:resultType:指定的就是單條記錄所對映的java物件型別
$ {}:表示拼接SQL串,將接收到的引數內容不加任何修飾拼接在SQL中。
使用$ {}拼接SQL,引起SQL隱碼攻擊
$ {value}:接收輸入引數的內容,如果傳入型別是簡單型別,$ {}中只能是value,使用$ {value},可能會引起SQL隱碼攻擊,存在安全隱患。

2、程式程式碼

   //根據使用者name模糊查詢使用者
    @Test
    public void findUserByName() throws IOException{
        //mybatis配置檔案
        String resource = "SqlMapConfig.xml";
        //得到配置檔案流
        InputStream inputStream = Resources.getResourceAsStream(resource);
        //建立會話工廠,傳入mybatis的配置檔案資訊
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        //通過工廠得到SqlSession
        SqlSession sqlSession = sqlSessionFactory.openSession();
        List<User> list = sqlSession.selectList("test.findUserByName","小明");
        System.out.println(list);
        sqlSession.close();
    }

3、總結:

3.1 parameterType

​ 在對映檔案中通過parameterType指定輸入引數的型別

3.2 resultType

​ 在對映檔案中通過resultType指定輸出結果的型別

3.3 #{ }和${ }

​ #{ }表示一個佔位符。

​ ${ }表示一個拼接符號,可能會引起SQL隱碼攻擊,所以不建議使用。

3.4 selectOne和selectList

​ selectOne表示查詢出一條記錄進行對映,如果使用selectOne可以實現使用selectList也可以實現(list中只有一個物件)

​ selectList表示查詢出一個列表(多條記錄)進行對映,如果使用selectList查詢多條記錄,不能使用selectOne。

相關文章