关闭

MyBatis-搭建MyBatis开发环境一(MyEclipse版)

标签: mybatis
4957人阅读 评论(2) 收藏 举报
分类:

一、引入MyBatis及其相关jar包
1、mybatis-3.2.2.jar:mybatis的jar包
2、mysql-connector-java-5.1.0-bin.jar:MySQL数据库jar包
3、log4j-1.2.16.jar:日志、用于开发显示提示信息如执行的SQL语句及参数


二、新建mybatis-config.xml配置文件

这里写图片描述

1、在项目下新建一个源码文件夹resources,在里面新建一个xml取名为mybatis-config.xml

2、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">

三、在mybatis-config.xml中配置数据库相关信息

<configuration>
    <!-- default属性表示采用哪种配置 -->
    <environments default="development">
        <!-- 配置情况的一种,可以有多个,根据environments 的default来指定使用哪一种 -->
        <environment id="development">
            <!-- 配置事务管理 采用JDBC -->
            <transactionManager type="JDBC"/>
            <!-- POOLED:mybatis的数据源,JNDI:基于tomcat的数据源 -->
            <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>
</configuration>

四、创建数据库properties文件

这里写图片描述

1、在resources源码文件夹下新建一个properties文件,这里我取名叫jdbc.properties,然后再里面写入数据库连接相关信息。

2、然后在mybatis-config.xml文件内配置jdbc.properties文件路径

这里写图片描述


五、配置Log4j,让控制台输出SQL语句及参数相关信息

这里写图片描述

1、在resources文件夹下新建log4j.properties文件

2、log4j.properties参考内容

log4j.rootLogger=DEBUG,CONSOLE,file
#log4j.rootLogger=ERROR,ROLLING_FILE
log4j.logger.cn.jbit.dao=debug
log4j.logger.com.ibatis=debug 
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=debug 
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=debug 
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=debug 
log4j.logger.java.sql.Connection=debug 
log4j.logger.java.sql.Statement=debug 
log4j.logger.java.sql.PreparedStatement=debug 
log4j.logger.java.sql.ResultSet=debug 
log4j.logger.org.tuckey.web.filters.urlrewrite.UrlRewriteFilter=debug

######################################################################################
# Console Appender  \u65e5\u5fd7\u5728\u63a7\u5236\u8f93\u51fa\u914d\u7f6e
######################################################################################
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.Threshold=error
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern= [%p] %d %c - %m%n


######################################################################################
# DailyRolling File  \u6bcf\u5929\u4ea7\u751f\u4e00\u4e2a\u65e5\u5fd7\u6587\u4ef6\uff0c\u6587\u4ef6\u540d\u683c\u5f0f:log2009-09-11
######################################################################################
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.DatePattern=yyyy-MM-dd
log4j.appender.file.File=log.log
log4j.appender.file.Append=true
log4j.appender.file.Threshold=error
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-M-d HH:mm:ss}%x[%5p](%F:%L) %m%n


log4j.logger.com.opensymphony.xwork2=error  

3、在mybatis-config.xml配置文件内添加如下配置

    <settings>
        <!-- 配置mybatis的log实现为LOG4J 后台输出SQL语句-->
        <setting name="logImpl" value="LOG4J"/>
    </settings>

六、测试
1、在数据库中新建表emp

这里写图片描述

2、创建表对应的实体类

这里写图片描述

3、新建EmpMapper.xml文件

这里写图片描述

4、EmpMapper.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">

5、编写EmpMapper.xml文件

<mapper namespace="com.bc.dao.EmpMapper">
    <!-- 添加Emp数据,parameterType -->
    <insert id="addEmp" parameterType="com.bc.pojo.Emp">
        insert into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno) 
            values(#{empno},#{ename},#{job},#{mgr},#{hiredate},#{sal},#{comm},#{deptno})
    </insert>

    <!-- 更新Emp数据 -->
    <update id="updateEmp" parameterType="com.bc.pojo.Emp">
        update emp set ename=#{ename},job=#{job},mgr=#{mgr},hiredate=#{hiredate},sal=#{sal},
            comm=#{comm},deptno=#{deptno} 
                where empno=#{empno}
    </update>

    <!-- 查询所有雇员信息 -->
    <select id="getEmpList" resultType="com.bc.pojo.Emp">
        select * from Emp
    </select>

    <!-- 删除雇员信息 -->
    <delete id="deleteEmp" parameterType="com.bc.pojo.Emp">
        delete from Emp where empno=#{empno}
    </delete>
</mapper>

这里写图片描述

6、在mybatis-config.xml中引入EmpMapper.xml(不要忘记)

<mappers>
    <!-- 要用"/"而不是"." -->
    <mapper resource="com/bc/dao/EmpMapper.xml"/>
</mappers>

7、测试代码

public class EmpTest {

    private Logger logger = Logger.getLogger(EmpTest.class);

    @Test
    /**添加Emp测试*/
    public void addEmpTest() {
        //mybatis-config.xml文件路径
        String resource = "mybatis-config.xml";
        SqlSession sqlSession = null;
        //要插入的Emp对象
        Emp emp = new Emp();
        emp.setEname("测试");
        emp.setDeptno(1);

        try {
            //1 读取配置文件(mybatis-config.xml)的输入流
            InputStream is = Resources.getResourceAsStream(resource);
            //2 创建sqlSessionFactory对象,完成对配置文件的读取
            SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
            //3 创建sqlSession
            sqlSession = factory.openSession();
            //4 调用mapper文件进行数据操作(调用之前必须要把mapper文件加入到mybatis-config.xml)
            sqlSession.insert("com.bc.dao.EmpMapper.addEmp", emp);
            //5 提交事务
            sqlSession.commit();
        } catch (Exception e) {
            e.printStackTrace();
            //出现异常回滚事务
            sqlSession.rollback();
        } finally {
            //关闭会话
            sqlSession.close();
        }
    }

    /**更新Emp测试*/
    public void updateEmpTest() {
        //mybatis-config.xml文件路径
        String resource = "mybatis-config.xml";
        SqlSession sqlSession = null;
        //要更新的Emp对象
        Emp emp = new Emp();
        emp.setEmpno(65);
        emp.setEname("更新测试");

        try {
            //1 读取配置文件(mybatis-config.xml)的输入流
            InputStream is = Resources.getResourceAsStream(resource);
            //2 创建sqlSessionFactory对象,完成对配置文件的读取
            SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
            //3 创建sqlSession
            sqlSession = factory.openSession();
            //4 调用mapper文件进行数据操作(调用之前必须要把mapper文件加入到mybatis-config.xml)
            sqlSession.update("com.bc.dao.EmpMapper.updateEmp", emp);
            //5 提交事务
            sqlSession.commit();
        } catch (Exception e) {
            e.printStackTrace();
            //出现异常回滚事务
            sqlSession.rollback();
        } finally {
            //关闭会话
            sqlSession.close();
        }
    }

    /**查询Emp测试*/
    public void getEmpListTest() {
        //mybatis-config.xml文件路径
        String resource = "mybatis-config.xml";
        SqlSession sqlSession = null;
        //查询结果集
        List<Emp> empList = new  ArrayList<>();

        try {
            //1 读取配置文件(mybatis-config.xml)的输入流
            InputStream is = Resources.getResourceAsStream(resource);
            //2 创建sqlSessionFactory对象,完成对配置文件的读取
            SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
            //3 创建sqlSession
            sqlSession = factory.openSession();
            //4 调用mapper文件进行数据操作(调用之前必须要把mapper文件加入到mybatis-config.xml)
            empList = sqlSession.selectList("com.bc.dao.EmpMapper.getEmpList");
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            //关闭会话
            sqlSession.close();
        }

        //遍历数据
        for (Emp emp : empList) {
            logger.debug(emp.getEname());
        }
    }

    /**删除Emp测试*/
    public void deleteEmpTest() {
        //mybatis-config.xml文件路径
        String resource = "mybatis-config.xml";
        SqlSession sqlSession = null;
        //要删除的Emp对象
        Emp emp = new Emp();
        emp.setEmpno(65);

        try {
            //1 读取配置文件(mybatis-config.xml)的输入流
            InputStream is = Resources.getResourceAsStream(resource);
            //2 创建sqlSessionFactory对象,完成对配置文件的读取
            SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
            //3 创建sqlSession
            sqlSession = factory.openSession();
            //4 调用mapper文件进行数据操作(调用之前必须要把mapper文件加入到mybatis-config.xml)
            sqlSession.delete("com.bc.dao.EmpMapper.deleteEmp", emp);
            //5 提交事务
            sqlSession.commit();
        } catch (Exception e) {
            e.printStackTrace();
            //出现异常回滚事务
            sqlSession.rollback();
        } finally {
            //关闭会话
            sqlSession.close();
        }
    }
}

8、执行结果(以插入为例)

这里写图片描述

七、总结
从以上代码可以看出,有很多臃肿的地方,比如类名使用完全包名+类名可以使用别名优化,测试代码很多重复性的代码可以提取出来等,这些问题参考下一篇博客
下一篇:MyBatis-搭建MyBatis开发环境二(MyEclipse版)

1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:279540次
    • 积分:1648
    • 等级:
    • 排名:千里之外
    • 原创:46篇
    • 转载:0篇
    • 译文:0篇
    • 评论:76条
    最新评论