这几天,在尝试mybatis框架链接到数据库。

上网找了课程,都是mysql+mybatis。

改别人的代码,配置里的内容要写正确是很重要的,我用了二天都想不明白哪里写错了。

报错写:连接失败。

翻开配置conf.xml来看,那句话

<property name="driver" value="oracle.jdbc.driver.OracleDriver" />
<property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl" />

(这是写正确的)

我少了driver,1521:后面写的mybase,复制别人的代码,没看清楚别人的数据库名字和自己的数据库名字是不一样的。

改完后,启动test,终于能启动了。

二话不说,直接贴上我的代码,希望你们也能链接成功。

 


 

先上整个项目的树:

 

 

第一步,在plsql,创建一张表

create table users(

id number  primary key,

name varchar2(10),

age number

--插入数据

insert into users values(1,'名字1',20);

insert into users values(2,'名字2',20);

insert into users values(3,'名字3',20);

 

第二步,导入两个包到项目中,如图:

ojdbc14.jar是数据库jar,mybatis-3.1.1.jar是mybatis的jar(网上下载就可以了),只需这两个包就可以了。

第三步,users表的实体类:

package com.entity;

public class User {
    private int id;
    private String name;
    private int age;
    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 int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    

    public String toString() {
        return "User [id=" + this.id + ", name=" + this.name + ", age=" + this.age + "]";
    }
    
    
    
}

接着就是它的映射文件:(注意select语句末尾不要加“;”)

<?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,namespace的值习惯上设置成包名+sql映射文件名,这样就能够保证namespace的值是唯一的
例如namespace="me.gacl.mapping.userMapper"就是me.gacl.mapping(包名)+userMapper(userMapper.xml文件去除后缀)
 -->
<mapper namespace="com.mapping.userMapper">

      <select id="getUser" parameterType="int" 
        resultType="com.entity.User">
        select * from users where id=1
    </select>
</mapper>
userMapper.xml

测试代码:

package com.test;
import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;
import java.util.List;

import com.entity.User;

import org.apache.ibatis.builder.xml.dynamic.ForEachSqlNode;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class test {

    public static void main(String[] args) throws IOException {
        String resource = "conf.xml";
      
        InputStream is = test.class.getClassLoader().getResourceAsStream(resource);
   
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);

        SqlSession session = sessionFactory.openSession();
            
        String statement = "com.mapping.userMapper.getUser";//
        User user = session.selectOne(statement);
        System.out.println(user.toString());
        }
    
    }
test.java