test.java
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;
import org.junit.Test;
import com.tj.mybatis.pojo.user;
//注解 配置junit测试
@Test
public void test1() throws IOException{
// 创建SqlSessionFactoryBuilder对象
SqlSessionFactoryBuilder sqlSessionFactoryBuilder=new SqlSessionFactoryBuilder();
// 加载mybatis核心配置文件 (这里路径问题,如config与src同级目录不需要加config/)
//这里input会有一个io异常,这里直接抛出了,没try catch
InputStream inputStream=Resources.getResourceAsStream("config/SqlMapConfig.xml");
// 创建SqlSessionFactory对象 创建sqlsession工厂通过io流传入核心配置文件
SqlSessionFactory sqlSessionFactory=sqlSessionFactoryBuilder.build(inputStream);
// SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
// 得到user.xml中配置的 增删改查 填入的是select标签中设置的id名
user user = sqlSession.selectOne("getUserById", 1);
// 在由于实体类中配置了toString 所以直接输出user实体类
System.out.println(user);
// 用完关闭资源 sessionFactory 不用关闭 0.0
sqlSession.close();
}
sqlMapConfig.xml 这个xml文件在测试类中加载了
<?xml version="1.0" encoding="UTF-8"?>
<!-- 恩恩,,这里是写死的,复制粘贴就好,config.dtd -->
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<!-- 所有配置信息都在configuration标签中 -->
<configuration>
<!-- 后期跟spring整合之后废除 -->
<environments default="test">
<!-- 这里的id和上面的default名称是对应的 -->
<environment id="test">
<!--使用的是jdbc的事物管理 -->
<transactionManager type="JDBC"/>
<!-- 配置连接池 --> <!-- POOLED C3P0 都行-->
<dataSource type="POOLED">
<!-- 这里驱动根据自己使用数据库进行填写,这里用的是oracle,需要导入JDBC.JAR -->
<property name="driver" value="oracle.jdbc.OracleDriver"/>
<!--数据库配置信息-->
<property name="url" value="jdbc:oracle:thin:@localhost:1521:xe"/>
<!-- 数据库用户名 -->
<property name="username" value="system"/>
<!-- 数据库密码 -->
<property name="password" value="sys"/>
</dataSource>
</environment>
</environments>
<!--加载mapper配置文件 --> <!-- 这里每个实体类对应的xml文件都需要配置一个 -->
<mappers>
<mapper resource="mybatis/user.xml"/>
</mappers>
</configuration>
user.xml 这是上面配置的mapper
<?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" >
<!--定义是命名空间,用于隔离sql语句。 但是实际测试这个取名不用非要与实体类名相同,随机改个名并不影响运行-->
<mapper namespace="user">
<!-- parameterType 传入参数的类型
resultType 返回值的类型
#{xxx} 调用的名称 这里写sql语句并不需要分号
这里可以有
select
delete
insert
update
-->
<select id="getUserById" parameterType="int" resultType="com.tj.mybatis.pojo.user" >
select
id,
username,
birthday,
sex,
address
from KUSER
where id=#{id}
</select>
</mapper>
实体类 user
import java.util.Date;
//简单的实体类几个属性set get 加个toString方便测试
public class user {
private Integer id;
private String username;
private Date birthday;
private Integer sex;
private String address ;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public Integer getSex() {
return sex;
}
public void setSex(Integer sex) {
this.sex = sex;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "user [id=" + id + ", username=" + username + ", birthday="
+ birthday + ", sex=" + sex + ", address=" + address + "]";
}
}