1. 程式人生 > 其它 >mybatis-初始簡單配置(XML)

mybatis-初始簡單配置(XML)

技術標籤:筆記mybatismybatisjava資料庫

應用mybatis的步驟:

mybatis的入門

依賴配置。操作:

1,新建實體類,類中的屬性和資料庫中的屬性所對應

2,新建dao介面,裡面寫上你需要的方法(比如說返回全部的list集合)。

3,在resource裡面新建XML檔案,名叫SqlMapConfig.xml(mybatis的主配置檔案)

4,配置對映配置檔案,例如IUserDao.xml

環境搭建注意事項:

第一個,建立IUserDao。XML和IUserDao.java名稱是為了保持一致。在mybatis中它把持久層的操作介面和名稱和對映檔案也叫作Mapper,所以,IUserDao和IUserMapper是一樣的

在二個,在idea中建立目錄是和包不一樣。包是:com.demo.dao是三級目錄,而resource目錄是一級的。

第三個,mybatis的對映配置檔案必須和dao介面包結構相同。(同時,對映配置檔名稱和介面名稱必須相同)

第四個,對映配置檔案的mapper標籤namespace屬性取值必須是dao介面的全限命名

第五個,對映配置檔案的操作配置(select),id屬性的取值必須是dao介面的方法名

好處:當我們這樣寫的時候,不需要寫dao實現類了。

SqlMapConfig.xml

<?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>
<!--    外接屬性配置檔案 ,減少耦合-->
    <properties resource="mysql.properties"></properties>
<!--    這個包下的實體類自動起別名,為類名,無視大小寫-->
    <typeAliases>
        <package name="domain"/>
    </typeAliases>
<!--    配置資料來源-->
    <environments default="mysql">
        <environment id="mysql">
            <transactionManager type="JDBC"></transactionManager>
<!--            pooled  連線池-->
            <dataSource type="POOLED">
<!--                ${key}引用外部properties中的key-->
                <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>
<!--    介面Mapper檔案的路徑,按包指定-->
    <mappers>
        <package name="dao"/>
    </mappers>
</configuration>

起別名和Mapper檔案指定包更具價值。

實體類

public class User implements Serializable {
    private Integer id;
    private String name;
}

dao介面

public interface IUserDao {
    List<User> findAll();
    User findById(Integer id);
    List<Account> findAccountsByUid(Integer id);
}

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">
<mapper namespace="dao.IUserDao">
    <resultMap id="userMap" type="user">
        <id property="id" column="id"></id>
        <result property="name" column="name"></result>
    </resultMap>
    <select id="findAll" resultMap="userMap">
   select * from users;
    </select>
    <select id="findById" resultType="user" parameterType="int">
        select * from users where id=#{id}
    </select>
</mapper>

ParameterType表示引數型別。若指定查詢的資料不止一個,例如username和password必須同時符合,最好封裝到物件中,#{property}表示從引數物件中取值,若只是一個值,指定型別即可,property值任意。

resultType:表示返回值型別,指定為一個物件。(只適合於簡單查詢)

resultMap:表示返回型別的對映。(當資料庫的列名稱和物件屬性不一致時,當多表查詢時,必須指定,可重用);

test程式碼:

  @Before
    public void init() throws IOException {
        InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
        session= factory.openSession(true);
    }
    @org.junit.Test
    public void test() throws IOException {

        IUserDao userDao= session.getMapper(IUserDao.class);
        List<User> all = userDao.findAll();
        for (User user : all) {
            System.out.println(user);
            System.out.println(user.getAccounts());
        }
    }

結果:

增刪改,只需要簡單修改Mapper即可。