Mybatis

一、Mybatis框架配置

  • 1、加入Mybatis驱动包 :mybatis-3.3.1.jar
  • 2、导入Mybatis配置文件:F:\java\Mybatis\mybatis包和代码\mybatis-3-mybatis-3.3.1源码包 \src\test\java\org\apache\ibatis\submitted\complex_property的Configuration.xml文件 。直接将Configuration.xml文件拷入项目中,修改其中内容。

        
        
        
        

二、Mybatis通过SqlSession对象实现Dao层的需求

Dao需求:

  • 1、对象能与数据库交互
  • 2、能执行SQL语句

SqlSession作用:

  • 1、向SQL语句中传入参数。
  • 2、执行SQL语句。
  • 3、获取执行SQL语句结果。
  • 4、事务的控制。

获得SQLSession对象

  • 1、通过配置文件获得数据库连接相关信息。
    Reader reader=Resources.getResourceAsReader("包名/myBatis配置文件名");从根目录src下开始写,此时写的是路径,应该用“/”而不是“.”。
  • 2、通过配置信息构建SqlSessionFactory。
    SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(reader);
  • 3、通过SqlSessionFactory打开一个数据库会话。
    SqlSession sqlSession=sqlSessionFactory.openSession();
Mybatis_第1张图片
Paste_Image.png
 public ListqueryMessageList(String command,String description)
    {
        DbAccess dbAccess=new DbAccess (); 
        ListmessageList=new ArrayList();
        SqlSession  sqlSession = null;
        
        try {
             sqlSession = dbAccess.getSqlSession;
             //通过sqlSession执行SQL语句,find表示配置文件中的id
            messageList=sqlSession.selectList("User.find")
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            if(sqlSession != null)
            {
                sqlSession.close();
            }
        }
}

通过SqlSession执行SQL语句

  • 添加配置文件:F:\java\Mybatis\mybatis包和代码\mybatis-3-mybatis-3.3.1源码包 \src\test\java\org\apache\ibatis\submitted\complex_property的User.xml文件。直接将文件拷入项目自己新建的包中。


  
  
    DELETE FROM user WHERE id = #{id:INTEGER}
  
  
    INSERT INTO user
    ( id,
    username,
    password,
    administrator
    )
    VALUES
    ( #{id},
    #{username,jdbcType=VARCHAR},
    #{password.encrypted:VARCHAR},
    #{administrator,jdbcType=BOOLEAN}
    )
  
  
    UPDATE user SET
    username = #{username,jdbcType=VARCHAR},
    password = #{password.encrypted,jdbcType=VARCHAR},
    administrator = #{administrator,jdbcType=BOOLEAN}
    WHERE
    id = #{id,jdbcType=INTEGER}
  
  
  

可以通过配置文件中的select中的id信息调用不同的SQL语句执行,id的名字必须唯一;如果有多个配置文件,文件中的id想要重复命名,可以通过“”标签来区分。此时调用SQL语句是应该增加namespaca的名字:

sqlSession.select("Message.find")

数据库中的字段与Java类中的属性对应

通过配置文件实现

//type表示类的全名,包括包名;id同sql语句中的id

    
    
    
    
 

子标签包括id标签和result标签,如果数据库中一个字段为主键是用id标签,如果是普通的列就用result标签。column表示数据库中的字段名,property表示类中的对象名。数据库中的字段类型与jdbcType中的类型或者Type类下面的常量名有对应关系。

最后将这个配置文件添加到核心配置文件中

 
    
  

三、SQL语句拼接

配置文件中的select接受参数时(用parameterType接受传递的参数,只写传递参数的类型,不写参数名),只能接受一个,如果Java代码要传递两个或以上参数,需要进行封装,然后进行传递。