温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Maven-MyBatis

发布时间:2020-07-06 13:32:28 来源:网络 阅读:1166 作者:蔡叔 栏目:开发技术
1.创建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.创建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>
<!-- 开发环境 -->
<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.创建 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对多的关系,如需实现级联查询,修改为如下配置
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 一对一关联 -->
    <!-- dept 这个对象里面的内容,需要通过哪个方法来填充里面的值 -->
    <!-- dept里面的内容需要通过 DeptMapper 里面方法来填充里面的值 -->
    <!-- column="did" 通过did关联 -->
    <!-- 每次得到一个员工就会得到员工的部门编号,因为是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问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI