1. 首先加载mybatis-config.xml总配置文件,根据development的参数配置连接数据库;查询mappers映射关系,找到mapper.xml配置文件。
mybatis-config.xml总配置文件代码
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!--配置数据库连接信息-->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="oracle.jdbc.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:orcl"/>
<property name="username" value="scott"/>
<property name="password" value="tiger"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/gxy/dao/Rj191Mapper.xml"/>
</mappers>
</configuration>
2. 执行mapper.xml文件,该文件记录了运行SQL;准备id的名字等待被调用。
mapper.xml代码
<?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="?">
<!--通用结果集映射-->
<resultMap id="BaseResultMap" type="com.gxy.entity.Rj191">
<id column="id" property="id"></id>
<result column="name" property="name"></result>
<result column="age" property="age"></result>
<result column="salary" property="salary"></result>
<result column="create_date" property="createDate"></result>
</resultMap>
<!--查询数据-->
<select id="selectRj191List" resultMap="BaseResultMap">
select * from RJ191
</select>
</mapper>
这是我实体类的一些属性,实体类里有getter和setter方法,有参,无参构造方法,tostring方法.
private int id;//id
private String name;//姓名
private int age;//年龄
private double salary;//工资
private Date createDate;//创建日期
3. 测试类生成SqlSessionFactory工厂对象。
//mybatis3.0 加载(读取)总配置文件
String resouce = "mybatis-config.xml";//代表总配置文件的路径
InputStream is = Resources.getResourceAsStream(resouce);
//获取SqlSessionFactory对象
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
4. 由工厂对象生成SqlSession,然后打开连接数据库连接通道。
//通过SqlSessionFactory打开SqlSession,是数据库之间的会话,通过session连接数据库. session类似于jdbc的connection数据库连接
SqlSession session = factory.openSession();
5. 对应调用mapper.xml文件中的id,执行mapper.xml中SQL语句。
//Sq1Session内置多个操作数据库的API方法,参数通过字符串名称 获取mapper文件中的id,进而获取的sq1语句发送给数据库
List<Rj191> list = session.selectList("selectRj191List");
//使用foreach输出
for (Rj191 student : list) {
System.out.println(student);
}
7. 关闭SqlSession
//关闭session
session.close();
在这里总结一下我遇到的错误.
java.sql.SQLSyntaxErrorException: ORA-00911: 无效字符
这个错误是因为sql语句多加了一个 ; 号.把分号删了就可以了
java.lang.IllegalArgumentException
这个是写代码太马虎了,在调用id的时候前面多了个空格.
总结的可能不够好,萌新一枚请多关照.