mybatis 执行流程以及初用错误总结
mappper 配置文件 头文件:
1. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "mybatis-3-mapper.dtd"> 之前三者写的不一致,有什么config的导致,错误
2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">, 之前文件中有这个部分,配置文件中
namespace 一直在报错,然后查询资料显示:在没有网络的时候需要将上面红色字体删掉就解决,但不知道到底是为什么?
mybatis 执行流程:
public static void main(String[] args){
//读取配置文件
System.out.println("hello");
String resource = "mybatis_config.xml";
InputStream inputstream;
try {
inputstream = Resources.getResourceAsStream(resource);
//根据配置文件构建sqlsessionfactory
SqlSessionFactory sqlsessionfactory = new SqlSessionFactoryBuilder().build(inputstream);
//sqlsessionfactory 构建 sqlsession
SqlSession sqlsession = sqlsessionfactory.openSession();
//查询数据,返回结果
car result = sqlsession.selectOne("config.mapperRequest.findCarById", 1);
result.show();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
在执行上面红色语句的时候报错,原因是绿色字体写错,selectOneO 方法 的第 一个参数表示映射 SQL 的标识字符串,它由 CustomerMapper .x ml <mapper> 元素的namespace 属性值+<select> 元素的 id 属性值组成;第 个参数表示查询所需要的参数,
mybatis 基本执行过程:
public class mybatis_test {
@Test
public static void main(String[] args){
//读取配置文件
String resource = "mybatis_config.xml";
InputStream inputstream;
try {
inputstream = Resources.getResourceAsStream(resource);
//根据配置文件构建sqlsessionfactory
SqlSessionFactory sqlsessionfactory = new SqlSessionFactoryBuilder().build(inputstream);
//sqlsessionfactory 构建 sqlsession
SqlSession sqlsession = sqlsessionfactory.openSession();
//查询数据,返回结果
int row = sqlsession.delete("config.mapperRequest.deleteCar", 7);
if(row > 0) {
System.out.println("删除用户成功");
}
//上面执行的操作必须在提交sqlsession提交之后才有效
sqlsession.commit();
sqlsession.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
执行完sqlsession 之后必须之前 commit close ,否则数据库的执行动作其实都是没有执行的,就像是回滚了