欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

mybatis的环境搭建

程序员文章站 2022-05-03 13:56:04
mybatis是一个持久层框架,其主要思想就是想将程序中的大佬SQL语句剥离出来,配置在配置文件中,实现SQL的灵活配置. 使得SQL与程序代码分离,即在不修改程序代码的情况下,直接在配置文件中修改SQL. mybatis的搭建步骤 下载jar包并部署包 mybatisjar下载网址:https:/ ......

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

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

mybatis的搭建步骤

下载jar包并部署包

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

 

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

mybatis的环境搭建

最后只需把jar包放入项目的此lib mybatis的环境搭建目录下即可

或者选中项目右键 build pathmybatis的环境搭建

进入此窗口mybatis的环境搭建

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

编写mybatis核心配置文件

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

  请先看第6点

  1. 选择window →  preferences
  2. 搜索xml →  xml catalog出现如下窗口
  3. mybatis的环境搭建
  4.  add → file system 选择你所需要的文件dtdmybatis的环境搭建

    这两个文件都是经常使用的所以都添加进去mybatis的环境搭建

  5. key 需要与配置文件中的 mybatis的环境搭建此部分相同

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

  6. 所需的dtd文件都在mybatis解压后的 mybatis-3.4.4\org\apache\ibatis\builder\xml 下面如图mybatis的环境搭建

创建核心配置文件

  1. 找到如下窗口 → nextmybatis的环境搭建
  2. 选择第一个 → next mybatis的环境搭建
  3.  选择第二个 → 选择config → next→finish即可mybatis的环境搭建

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

编写核心配置文件

  话不多说直接上代码

 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>

关于核心配置文件的标签顺序可以参考此博客

 https://blog.csdn.net/feihongxiansen/article/details/79768483 

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

  结构如下mybatis的环境搭建

创建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类型.
  3. 每个id分别对应着接口里面的一个方法 且这个接口的方法名字必须与id相对应

 

编写测试类运行

   工具类代码如下

 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实例执行已映射的语句,即使usermpper这个接口也不会影响运行结果.