IDEA中使用Mybatis的一个DEMO遇到的一些问题

1.创建项目:

使用maven创建的一个quickstart项目,然后在pom.xml中添加MyBatis的相关依赖,pom.xml文件如下:

 
    
      junit
      junit
      4.11
      test
    

    
      org.mybatis
      mybatis
      3.4.0
    

    
    
      mysql
      mysql-connector-java
      5.1.6
    

  

然后观察下IDEA的项目结构:File -> Project Structure ->Modules

IDEA中使用Mybatis的一个DEMO遇到的一些问题_第1张图片

此时,代码的源路径为: src/main/java  资源文件的源路径为:src/main/java/resource

InputStream inputstream = class.getClassLoader().getResourceAsStream(resource)

在使用以上方法读取资源的时候,在IDEA中,如果resource不是设置的资源文件的源路径,那么读出的io流会报错,

为null,参见:getResourceAsStream的几种路径配置 。

以上为项目结构设置,下面简单介绍下使用 xml 文件 以及 注解方式的Mybatis使用方式。

2.使用xml配置映射文件方式

首先,我们看主配置文件conf.xml:




    
        
            
            
            
                
                
                
                
            
        
    

    
        
        
    

需要注意的几个地方:

1.  事务管理使用jdbc来完成

2. 标签中配置的是jdbc驱动,具体数据库,数据库连接用户名和密码

3. 中注册了映射文件。

然后,我们再来看一个具体的文件:

这里一个mapper.xml文件与一个接口相对应,这里是对一个user表的操作来举例,user表里分别有id,name,corp(公司)属性。

Mybatis为一个ORM工具,即对象-关系映射模型,那么我们下面分别介绍下 对象User,以及将此对象与关系数据库映射的文件 UserOp.interface 与 UserOp.xml 。

1. User 类

public class user {
    private int id;
    private String name;
    private String corp;

    public user(){} 

    public user(int id, String name, String corp) {
        this.id = id;
        this.name = name;
        this.corp = corp;
    }

    public user(String name, String corp) {
        this.name = name;
        this.corp = corp;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getCorp() {
        return corp;
    }

    public void setCorp(String corp) {
        this.corp = corp;
    }
}

需要注意的是,如果不加默认的构造函数,会报错:

org.apache.ibatis.executor.ExecutorException: No constructor found in com....

所以需要加一个默认的构造函数。

2. UserOp.interface

public interface UserOP {

    public void addUser(user user);

    public void updateUser(user user);

    public void deleteUser(int id);

    public user getUser(int id);

}

此接口中定义了几种操作,在使用时,调用此接口中的方法。

3.UserOp.xml





    
      insert into user (name,corp) values (#{name}, #{corp})
    

    
    
    
        update user set name = #{name}, corp = #{corp} where id = #{id}
    

    
        delete from user where id = #{id}
    

需要注意的几点:

的namespace属性,对应相关的接口;