如何获取MyBatis仓库?
org.mybatis
mybatis
3.5.2
1.搭建一个数据库
sql语句:
CREATE DATABASE mybatis2;
USE mybatis2;
CREATE TABLE USER (
id INT(20) NOT NULL PRIMARY KEY,
NAME VARCHAR(30) DEFAULT NULL,
pwd VARCHAR(30) DEFAULT NULL
)ENGINE=INNODB DEFAULT CHARSET=utf8;
INSERT INTO USER ( id , NAME , pwd ) VALUES
(1,'张三','123456'),
(2,'李四','321654'),
(3,'王五','963741')
2.新建项目
2.1新建一个普通的maven项目
2.2删除src目录作为一个父工程
2.4导入依赖
2.4.1依赖文件代码
mysql
mysql-connector-java
5.1.46
org.mybatis
mybatis
3.5.2
junit
junit
4.12
配置数据库
//SqlSessionFactory SQL会话工厂,
public class MybatisUtils {
private static SqlSessionFactory sqlSessionFactory;
static {
try {
//使用Mybatis第一步:获取sqlSessionFactory对象
String resource = "mybatis-config.xml";//初始获取一个资源 直接读取
InputStream inputStream = Resources.getResourceAsStream(resource);//用获取资源作为流
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);//通过这个build去加载这个流进来
} catch (IOException e) {
e.printStackTrace();
}
}
//既然有了SqlSessionFactory顾名思义,我们就可以获取SqlSession的实例。
// SqlSession完全包含了面向数据库执行SQL命令所需要的所有方法。可以通过SqlSession实例来直接执行已映射的SQL语句
public static SqlSession getSqlSession(){
SqlSession sqlSession = sqlSessionFactory.openSession();
return sqlSession;
}
}
实体类
//实体类
public class User {
private int id;
private String name;
private String pwd;
public User() {
}
public User(int id, String name, String pwd) {
this.id = id;
this.name = name;
this.pwd = pwd;
}
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 getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", pwd='" + pwd + '\'' +
'}';
}
}
接口实现类UserMapper.xml配置文件
public class UserDaoTest {
@Test
public void test(){
//第一步:获得SqlSession对象
SqlSession sqlSession = MybatisUtils.getSqlSession();
//执行SQL 方式一:getMapper
Userdao mapper = sqlSession.getMapper(Userdao.class);
List userList = mapper.getUserList();
for (User user : userList) {
System.out.println(user);
}
sqlSession.close();
}
}
运行时会出现一个错误
绑定异常,这个文件没有被注册
org.apache.ibatis.binding.BindingException: Type interface org.westor.dao.Userdao is not known to the MapperRegistry.
解决方式:更改核心配置文件注册Mapper
再一次运行会出现一个初始化错误的异常
解决方式:配置一段代码 在 build中配置resources,来防止我们资源导出失败的问题-
src/main/resources
**/*.properties
**/*.xml
true
src/main/java
**/*.properties
**/*.xml
true
运行时还是出现初始化异常时ExceptionInInitializerError可以删除接口的xml文件的注解
解决问题
1.配置文件没有注册
2.绑定接口错误
3.方法名不对
4.返回类型不对
5.Maven导出资源问题
6.接口.xml文件不能注释(有可能是idea的问题)