zoukankan      html  css  js  c++  java
  • 配置开发MyBatis

      MyBatis是一款持久层(ORMapping)框架,支持定制化SQL,避免了几乎所有的JDBC代码和手动设置参数,以及获取结果集。将接口和Java的POJO映射成数据库中的记录。

      1、建立名为mybatis的maven父项目,同时配置依赖包

        <dependency>
          <groupId>org.mybatis</groupId>
          <artifactId>mybatis</artifactId>
          <version>3.4.6</version>
        </dependency>

      2、建立mybatis-base的子模块并配置mybati依赖包

      3、建立数据表News,并在父pom和子pom中引入数据库依赖包

        <dependency>
          <groupId>org.wisdom-framework</groupId>
          <artifactId>mysql-connector-java</artifactId>
          <version>5.1.34_1</version>
        </dependency>

      4、创建mybatis的配置文件:在src/main/resources/mybatis目录下创建mybatis.cfg.xml配置文件,在其里面编辑连接的数据库和连接方式

    <environments default="development"> <!-- 配置数据源的相关信息 -->
      <environment id="development">
        <transactionManager type="jdbc" /> <!-- 使用JDBC方式管理 -->
        <dataSource type="POOLED"> <!-- 设置数据源类型,此时为POOLED -->
          <property name="driver" value="org.gjt.mm.mysql.Driver" />
          <property name="url" value="jdbc:mysql://localhost:3306/mldn" />
          <property name="username" value="root" />
          <property name="password" value="mysqladmin" />
        </dataSource>
      </environment>
    </environments>

      5、创建与数据表相对应的vo类News,字段名称一样

      6、在src/main/resources源目录下创建mybatis.mapper.cn.lt.mapping包,在该包里创建News.xml文件,用来配置使用的SQL语句。

    <!-- 设置命名空间,可以与不同表的同类型操作进行区分,使用时以“空间名称.id”的方式调用 ,相当于配置文件自己的名字-->
    <mapper namespace="cn.mldn.mapping.NewsNS">
      <select id="getAllCount" resultType="Long" parameterType="map">
        SELECT COUNT(*) FROM news WHERE ${column} LIKE #{keyWord} ;
      </select>
      <select id="findSplit" resultType="News" parameterType="map">
        SELECT nid,title,pubdate FROM news WHERE ${column} LIKE #{keyWord} LIMIT #{start} , #{lineSize} ;
      </select>
      <select id="findAll" resultType="News">
        SELECT nid,title,pubdate FROM news ;
      </select>
      <select id="findById" resultType="News" parameterType="long">
        SELECT nid,title,pubdate FROM news WHERE nid=#{id} ;
      </select>
        <!-- 定义增加数据的操作配置,同时指定参数类型 -->
      <insert id="doCreate" parameterType="News" keyProperty="nid" useGeneratedKeys="true">
        INSERT INTO news(title,pubdate) VALUES (#{title},#{pubdate})
      </insert>
      <update id="doEdit" parameterType="News">
        UPDATE news SET title=#{title},pubdate=#{pubdate} WHERE nid=#{nid}
      </update>
      <delete id="doRemove" parameterType="Long"> <!-- 单个参数 -->
        DELETE FROM news WHERE nid=#{id}
      </delete>
    </mapper>

      解释:<insert>中的id作为查询语句的唯一表示,parameterType为传入的数据类型,从vo类中传入,之所以只使用vo类名称而没有加上包,是因为在mybatis.cfg.xml中定义了别名:

        <typeAliases>
          <package name="cn.mldn.vo"/>  <--根据包名称自动映射-->
        </typeAliases> 

      resultType为从数据库返回的数据类型,keyProperty和useGeneratedKeys表示nid这个字段进行自动增长

        SQL语句中的#{字段}代替了传统PreparedStatement中的“?”,相当于直接从vo类中取得数据

      7、修改mybatis.cfg.xml文件,追加映射文件的路径

        <mappers>
          <mapper resource="mybatis/mapper/cn/mldn/mapping/News.xml"/>
        </mappers>

    到此为止,mybatis的核心配置文件定义完成,接下来需要对mabatis.cfg.xml资源文件进行读取

      8、使用mybatis的Resources类进行配置文件加载,使用SqlSessionFactory类进行连接工厂定义,用来管理多个连接,使用SqlSession进行具体的CRUD数据操作。

      

    番外篇:日志配置

      当我们测试SQL执行的时候,程序是没有任何信息返回的,为了能够容易的看到程序是否执行,可以使用日志组件

      1、父pom和子pom中引入三个日志的依赖包:

        <dependency>
          <groupId>org.apache.logging.log4j</groupId>
          <artifactId>log4j-core</artifactId>
          <version>2.11.0</version>
        </dependency>

        <dependency>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-api</artifactId>
          <version>1.8.0-beta2</version>
        </dependency>

        <dependency>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-log4j12</artifactId>
          <version>1.8.0-beta2</version>
          <scope>test</scope>
        </dependency>

      2、在src/main/resources/目录里面配置log4j.properties配置文件,并写入

        <--这里的包是News.xml中定义的namespace,但不包括类名,只有包名-->

        log4j.logger.cn.lt.mapping=TRACE

      这样执行SQL语句的时候就会在控制台输出日志

     会发现,使用MyBatis之后,没有编写任何一行具体的JDBC操作,自动的根据配置文件将vo转换成了具体的参数

    备注:

      <transactionManager type="jdbc" /> <!-- 使用JDBC方式管理 --> 

        采用JDBC的事务处理,提供有事务的创建,提交,回滚和关闭功能。也可以采用managed方式,表示什么都不做,没有提交回滚的事务连接。

      <dataSource type="POOLED"> <!-- 设置数据源类型,此时为POOLED -->

        配置数据库连接访问,其中POOLED表示采用数据库连接池进行连接

        也可以采用JNDI,表示使用Tomcat容器配置的数据库连接池访问

        也可以采用UNPOOLED,表示不使用连接池管理

  • 相关阅读:
    我们毕业了!!!@全体成员
    华东交通大学编译原理期末试卷
    软件设计师中级下午答题解题策略分析~
    Java实现旅行商最短距离
    基于SSH的医院在线挂号
    基于Java的模拟写字板的设计与实现
    基于java的雷电游戏
    基于Java的飞机大战游戏的设计与实现
    基于Java的超级玛丽游戏的设计与实现
    基于Javaee的影视创作论坛的设计与实现
  • 原文地址:https://www.cnblogs.com/haibinggan-/p/9218882.html
Copyright © 2011-2022 走看看