溫馨提示×

溫馨提示×

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

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

Maven-MyBatis

發(fā)布時間:2020-07-06 13:32:28 來源:網絡 閱讀:1155 作者:蔡叔 欄目:開發(fā)技術
1.創(chuàng)建maven工程
2.添加pom.xml依賴
    <dependencies>
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.4.4</version>
    </dependency>

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.38</version>
    </dependency>

    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.17</version>
    </dependency>

    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.11</version>
    </dependency>

</dependencies>

    3.創(chuàng)建Mybatis-config.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>
<!-- 開發(fā)環(huán)境 -->
<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://127.0.0.1:3306/employee?characterEncoding=UTF-8" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments>

<!-- 添加映射文件 -->
<mappers>
    <mapper resource="org/clarck/model/mapper/EmpMapper.xml"/>
    <mapper resource="org/clarck/model/mapper/DeptMapper.xml"/>
</mappers>

</configuration>

4.創(chuàng)建 log4j.properties , 用于查看日志
    log4j.rootLogger=DEBUG, Console 

#Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
#log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
log4j.logger.java.sql.ResultSet=INFO
log4j.logger.org.apache=INFO
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG

5.使用generator工具生成映射文件,由于兩張表存在1對多的關系,如需實現(xiàn)級聯(lián)查詢,修改為如下配置
EmpMapper.xml : 
<resultMap type="org.clarck.model.entity.Emp" id="empMap">
    <id property="eid" column="eid" javaType="int" />
    <result property="ename" column="ename" javaType="string" />
    <!-- association 一對一關聯(lián) -->
    <!-- dept 這個對象里面的內容,需要通過哪個方法來填充里面的值 -->
    <!-- dept里面的內容需要通過 DeptMapper 里面方法來填充里面的值 -->
    <!-- column="did" 通過did關聯(lián) -->
    <!-- 每次得到一個員工就會得到員工的部門編號,因為是select * -->
    <!-- 需要將每一個員工的部門編號傳遞到 DeptMapper 的通過部門編號來查詢部門信息的方法中 -->
    <!-- 通過select 去指明要調用的方法 -->
    <association property="dept" column="did"
        select="org.clarck.model.mapper.DeptMapper.query"></association>
</resultMap>

<!-- 通過部門編號獲取該部門的所有員工 -->
<select id="queryByDid" parameterType="int" resultMap="empMap">
    select * from emp where did = #{did}
</select>

DeptMapper.xml : 
<resultMap type="org.clarck.model.entity.Dept" id="deptMap">
    <id property="did" column="did" javaType="int" />
    <result property="dname" column="dname" javaType="string" />
</resultMap>

<resultMap type="org.clarck.model.entity.Dept" id="deptEmpMap">
    <id property="did" column="did" javaType="int" />
    <result property="dname" column="dname" javaType="string" />
    <collection property="emp" column="did"
        select="org.clarck.model.mapper.EmpMapper.queryByDid"></collection>
</resultMap>

<!-- 通過部門編號獲取該部門的所有員工 -->
<select id="queryByDid" parameterType="int" resultMap="deptEmpMap">
    select * from
    dept where did = #{did}
</select>

<!-- 通過部門編號獲取部門詳情 -->
<select id="query" parameterType="int" resultType="org.clarck.model.entity.Dept">
    select * from
    dept where did = #{did}
</select>

    6.測試類:
        @Test
public void testQueryByEid(){
    // 獲取session
    SqlSession session = MybatisSessionFactory.openSession();
    Emp emp = session.selectOne("org.clarck.model.mapper.EmpMapper.queryByEid",5);
    System.out.println(emp.getEname());
}

@Test
public void testQueryByEid2(){
    // 獲取session
    SqlSession session = MybatisSessionFactory.openSession();
    EmpMapper mapper = session.getMapper(EmpMapper.class);
    Emp emp = mapper.queryByEid(6);
    System.out.println(emp.getEname() + " --- " + emp.getDept().getDname());
}

@Test
public void query(){
    // 獲取session
    SqlSession session = MybatisSessionFactory.openSession();
    EmpMapper mapper = session.getMapper(EmpMapper.class);
    List<Emp> list = mapper.query();
    System.out.println(list);
}
向AI問一下細節(jié)

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

AI