zoukankan      html  css  js  c++  java
  • mybatis的环境搭建

      mybatis是一个持久层框架,其主要思想就是想将程序中大量的SQL语句剥离出来,配置在配置文件中,实现SQL的灵活配置.

    使得SQL与程序代码分离,即在不修改程序代码的情况下,直接在配置文件中修改SQL.

    mybatis的搭建步骤

    下载jar包并部署包

      mybatisjar下载网址:https://github.com/mybatis/mybatis-3/releases,mybatis压缩包解压后结构目录如下

    此外lib目录下存放着编译依赖包如下

    最后只需把jar包放入项目的此lib 目录下即可

    或者选中项目右键 build path

    进入此窗口

    单击第二个按钮直接从本地进行添加jar,亦或者按下按钮从此工作空间的项目中选择jar进行添加

    编写mybatis核心配置文件

    在此之前需要调整下xml的代码提示(引入dtd文件)

      请先看第6点

    1. 选择window →  preferences
    2. 搜索xml →  xml catalog出现如下窗口
    3.  add → file system 选择你所需要的文件dtd

      这两个文件都是经常使用的所以都添加进去

    4. key 需要与配置文件中的 此部分相同

      所以key是  -//mybatis.org//DTD Config 3.0//EN,那么dtd文件到哪里找呢?

    5. 所需的dtd文件都在mybatis解压后的 mybatis-3.4.4orgapacheibatisuilderxml 下面如图

    创建核心配置文件

    1. 找到如下窗口 → next
    2. 选择第一个 → next 
    3.  选择第二个 → 选择config → next→finish即可

    4. 此时创建好的xml文件便会自动生成如下代码

    编写核心配置文件

      话不多说直接上代码

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <!DOCTYPE configuration
     3     PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
     4     "http://mybatis.org/dtd/mybatis-3-config.dtd">
     5 <configuration>
     6     <!-- 引入database.propeerties -->
     7     <properties resource="database.properties"/>
     8     <!-- 配置mybatis的log实现log4j -->
     9     <settings>
    10         <setting name="logImpl" value="LOG4J"/>
    11     </settings>
    12     <typeAliases>
    13         <package name="cn.smbms.pojo"/>
    14     </typeAliases>
    15     <!-- 配置mybatis多套运行环境 -->
    16     <environments default="development">
    17         <environment id="development">
    18             <!-- 配置事物管理,采用jdbc的事物管理 -->
    19             <transactionManager type="JDBC"/>
    20             <!-- POOLED:mybatis自带的数据源,jndi:基于Tomcat的数据源 -->
    21             <dataSource type="POOLED">
    22                 <property name="driver" value="${driver}"/>
    23                 <property name="url" value="${url}"/>
    24                 <property name="username" value="${user}"/>
    25                 <property name="password" value="${pwd}"/>
    26             </dataSource>
    27         </environment>
    28     </environments>
    29     <!-- 将mapper文件加入到配置文件中 -->
    30     <mappers>
    31         <mapper resource="cn/smbms/dao/UserMapper.xml"/>
    32     </mappers>
    33 </configuration>
    属性 作用
    configuration 配置文件的根元素节点
    propertes 通过resource属性从外表知道properties属性文件,该属性文件描述数据库的相关配置
    settings 设置mybatis运行中的一些行为,比如此处设置mybatis的log日志实现为LOG4J,即使用log4j实现日志功能
    environments 表示配置mybatis的多套运行环境,将SQL映射到多个不同的数据库上,元素节点中可配置多个,但必须指定默认运行环境
    environment 配置mybatis的一套运行环境,需指定运行环境id,事务管理,数据源配置等相关信息
    mappers 作用是告诉mybatis去哪里找SQL映射文件(该内容是开发者定义的映射SQL语句),整个项目可以有1个或多个
    mapper mappers的子元素节点,具体知道SQL映射文件的路径,其中resource属性表SQL映射文件的路径

    创建实体类并为其创建DAO接口

      结构如下

    创建sql映射文件

      代码如下

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <!DOCTYPE mapper
     3 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     4 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
     5 <mapper namespace="cn.smbms.dao.UserMapper">
     6     <!-- 查询用户表记录数 -->
     7     <select id="count" resultType="int">
     8         select count(1) as count from smbms_user
     9     </select>
    10     <!-- 查询用户列表 -->
    11     <select id="getUserList" resultType="User">
    12         select * from smbms_user    
    13     </select>
    14 </mapper>
    1. mapper:映射文件的根元素节点,只有一个属性namespace
      1. namespace:用于区分不同的mapper,全局唯一.
    2. select:表示查询语句,是mybatis最常用的元素之一,常用属性如下
      1. id属性:改命名空间下唯一标识符
      2. resultType属性:表示SQL语句返回值类型,第一个select返回的是int,后者则是user类型

    编写测试类运行

       工具类代码如下

     1 package cn.smbms.utils;
     2 
     3 import java.io.InputStream;
     4 
     5 import org.apache.ibatis.io.Resources;
     6 import org.apache.ibatis.session.SqlSession;
     7 import org.apache.ibatis.session.SqlSessionFactory;
     8 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
     9 
    10 public class MyBatisUtil {
    11     private static SqlSessionFactory factory;
    12     static {
    13         try {
    14             //获取mybatis-config.xml文件的输出流
    15             InputStream is=Resources.getResourceAsStream("mybatis-config.xml");
    16             factory=new SqlSessionFactoryBuilder().build(is);
    17         } catch (Exception e) {
    18             e.printStackTrace();
    19         }
    20     }
    21     
    22     public static SqlSession createSqlSession() {
    23         return factory.openSession(false);    //默认true自带提交事务
    24     }
    25     public static void  closeSqlSession(SqlSession sqlSession) {
    26         if(null!=sqlSession) {
    27             sqlSession.close();
    28         }
    29     }
    30 }

    测试类代码方法一 基于mapper接口方式操作如下

    public static void main(String[] args) {
            Logger logger = Logger.getLogger(Test.class);
            SqlSession sqlSession =null;
            List<User> userList = new ArrayList<>();
            try {
                sqlSession = MyBatisUtil.createSqlSession();
                userList = sqlSession.getMapper(UserMapper.class).getUserList();
                for (User user : userList) {
                    logger.debug("testGetUserList UserCode:"+user.getUserCode()+"and userName:"+user.getUserName());
                }
            } catch (Exception e) {
                e.printStackTrace();
            }finally {
                MyBatisUtil.closeSqlSession(sqlSession);
            }
        }

    基于mapper接口方式操作此接口必须对应select映射SQL语句中的id对应

    测试类代码方法二 运行映射SQL语句

    public static void main(String[] args) {
            Logger logger = Logger.getLogger(Test.class);
            SqlSession sqlSession =null;
            List<User> userList = new ArrayList<>();
            try {
                sqlSession = MyBatisUtil.createSqlSession();
                //直接运行已映射的SQL语句
                userList = sqlSession.selectList("cn.smbms.dao.UserMapper.getUserList");
                for (User user : userList) {
                    logger.debug("testGetUserList UserCode:"+user.getUserCode()+"and userName:"+user.getUserName());
                }
            } catch (Exception e) {
                e.printStackTrace();
                logger.error(e);
            }finally {
                MyBatisUtil.closeSqlSession(sqlSession);
            }
        }

     在使用SQLsession实例执行已映射的语句,没有与id所对应的方法也不会出错,即使UserMpper这个接口没有也不会影响运行结果.

  • 相关阅读:
    WKWebView-b
    Label设置行间距
    前端开发福音!阿里Weex跨平台移动开发工具开源-b
    iOS 实现脉冲雷达以及动态增减元素 By Swift-感谢分享
    使用SourceTree将bitbucket的远程仓库回滚到某一次提交-b
    IPv6测试环境搭建
    React/React Native 的ES5 ES6写法对照表-b
    越狱开发:用iosOpenDev配置越狱开发环境 编写第一个hello world-b
    MSSQL-SQL SERVER还原与备份(导入与导出)
    PHP-深入学习Smarty
  • 原文地址:https://www.cnblogs.com/hfx123/p/9590509.html
Copyright © 2011-2022 走看看