mybatis的学习探讨(上)

原文: https://blog.csdn.net/xyz_dream/article/details/52671614

<span style=”color: rgb(51, 51, 51); font-family: 微软雅黑, “Microsoft YaHei”; font-size: 14px; line-height: 20px; text-align: center; background-color: rgb(255, 255, 255);”>                最近在一个名叫mybatis的java数据库框架,自我感觉上手比hibernate快很多,一个hibernate配置过于复杂,封装过多变得很死,不是灵活。然而mybatis比较灵活,因为这个框架依赖于你编写sql语句的能力,</span><span style=”color: rgb(51, 51, 51); font-family: 微软雅黑, “Microsoft YaHei”; font-size: 14px; line-height: 20px; background-color: rgb(255, 255, 255);”>丰富多彩的sql语句任你写,而且不需要担心sql注入的问题。</span>


首先是大体上了解mybatis的基本结构:


一 . 配置文件


1. 一个主配置文件: myBatisConig.xml (此xml文件将会配置全局的数据,jdbc连接配置,引入mapper映射文件等等)。

2. <span style="color:rgb(51,51,51);font-family:'微软雅黑', 'Microsoft YaHei';font-size:14px;line-height:20px;text-align:center;">数据库映射以及sql语句储存文件 : DataBaseMapper.xml,(文件名是我自定义的,没有指<span style="color:rgb(51,51,51);font-family:'微软雅黑', 'Microsoft YaHei';font-size:14px;line-height:20px;text-align:center;">定名称,大家学习的时候自己自定义取名称,但是需要有含义,能看懂就行)。</span></span></span></span></span></span></span></p>

3. 连接mysql数据库的jar包,大家自己添加,build path进去。</span></span></span></span></span></span></span></p>

二.载配置文件,通过工厂模式获取sqlsession
的会话对象。写一个获取session的工具类
                   package xyz.dream.mybatis

import java.io.IOException;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

class    MyBatisConf{

    private    SqlSessionFactory   sqlSessionFactory=null;
    public MyBatisConf(String  myBatisConfigXmlName){

          InputStream inputStream=null;
try {
   inputStream=Resources.getResourceAsStream(myBatisConfigXmlName);
   } catch (IOException e) {
   // TODO Auto-generated catch block
     e.printStackTrace();
 }

         sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
       }

                    //获取sqlSession对象   意思是从数据库连接池获取一个连接对象                         
       public SqlSession getSqlSession(){

SqlSession session=sessionFactory.openSession();

  return session;
           }
 }</code></pre>

三.简单演示一个例子


介绍一下mybatis的大致流程:通过mybatis的sqlsession对象,调用相关的增删改查方法,insert,delete,update,select等方法。实现对数据库的crud操作。在之前所说的DataBaseMapper.xml文件中写好了要执行的sql语句的id,传递参数类型,返回参数,通过这个id传入到insert,delete等方法中,就能实现crud。



模拟两条数据, 现在来查询一个表person(user_qq
,user_name,age, sex),在mysql数据库中建好如下信息。有两条信息


1234 jack
30 man

1235 tom 32 man


在DatabaseBaseMapper.xml中写好我们要进行操作的sql语句:


<span style=”font-family:Microsoft YaHei;”>
</span>
<span style=”font-family:Microsoft YaHei;”><?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">

<!– 映射文件的命名空间–>
<mapper namespace=”person” >

<!–查询记录数

  1. id唯一表示一条sql语句

    2.  resultType 是指数据返回的类型:    Interger
                                   3.  &lt;select&gt;  select查询标签,按此想法,大家也都知道剩下的标签
    

    –>

    <selectid=”person.selectCountOfPerson” resultType=”Integer”>
    select count(*) from person
    </select>

    <!–通过user_qq查询 人员的姓名

    1. paramterType 传递参数的数据类型
    2. #{user_qq} ==> 防止sql注入,变量替代传过来的Integer的数据
      –>
      <select id=”person.selectUserNameByUserQq”
      parameterType=”Integer” resultType=”String”>
      select user_name from person where user_qq=#{user_qq}
      </select>

</mapper></span>


测试代码: 新建一测试类 Test.java(在main方法中测试以下代码)

<span style=”font-family:微软雅黑, Microsoft YaHei;”>                                        </span><span style=”font-family:Microsoft YaHei;”>MyBatisConf conf=new MyBatisConf(“myBatisConfig.xml”); //加载配置文件

 SqlSession       sessionOne=conf.getSqlSession();// 获取数据库操作对象

            //获取记录行数

int    personCount=sessionOne.selectOne("person.selectCountOfPerson");

           //事务提交
             sessionOne.commit();
             System.out.println(personCount);//  显示为   2

                //通过user_qq  查询其名字

String   personName=sessionOne.selectOne("person.selectUserNameByUserQq",1234);
           //事务提交
      sessionOne.commit();
              System.out.println(personName);//输出    jack&lt;/span&gt;</code></pre><br/></div>

通过上面的例子大家应该大致知道mybatis的大致流程了。


1. 配置主配置文件myBatisConfig.xml


2.
配置好DateBaseMapper.xml,现在此文件写好你要执行的sql语句,取一个唯一标识的id,是否需要传参,参数类型,返回值类型等,把写好的sql语句放在select标签内。需要传入的变量,用#{var}
代替,防止
sql注入。

3. <span style="font-family:'微软雅黑', 'Microsoft YaHei';font-size:14px;line-height:20px;text-align:center;">获取操作对象 session,执行需要的sql语句,通过调用session内部方法来实现。<span style="font-family:'微软雅黑', 'Microsoft YaHei';font-size:14px;line-height:20px;text-align:center;">传递 <span style="font-family:'微软雅黑', 'Microsoft YaHei';font-size:14px;line-height:20px;text-align:center;"> DataBaseMapper.xml

的sql语句全名id(命名空间namespace+id),选择是否传递参数。接收返回值。


4. <span style="font-family:'微软雅黑', 'Microsoft YaHei';font-size:14px;line-height:20px;text-align:center;">记住事务提交    session.commit(),执行成功!</span></span></span></span></span></span></span></div>


* 本文章为原创文章,引用请注明出处。