参考:
mybatis官方文档:mybatis – MyBatis 3 | 入门
狂神视频:【狂神说Java】Mybatis最新完整教程IDEA版通俗易懂_哔哩哔哩_bilibili
步骤:
首先用Idea连接数据库,并在建立实验所需的数据库和数据表。创建一个普通maven项目,删掉scr作为父工程。在父工程的pop.xml中导入mybatis、mysql以及Junit 的jar包。根据文档,创建MybatisUtils工具类获取SqlSessionFactory对象。编写对应的配置文件mybatis-config.xml,来连接数据库,并为每一个mapper.xml进行注册。(有点类似之前的servlet-mapping,报道的感觉)接下来编写代码,首先写实体类编写对应的接口编写mapper.xml配置文件,来代替之前的实现类。其中:namespace绑定接口、id绑定接口中的方法,标签体专注于写sql语句,返回值类型resultType专注于返回值类型。编写测试类进行测试。调用方法即可。从 SqlSessionFactory 中获取 SqlSession【此处通过MybatisUtils工具类实现】,调用getMapper方法。其中每次收到 HTTP 请求,就可以打开一个 SqlSession,返回一个响应后,就关闭它。 这个关闭操作很重要,为了确保每次都能执行关闭操作,你应该把这个关闭操作放到 finally 块中。
步骤:
首先用Idea连接数据库,并在建立实验所需的数据库和数据表。创建一个普通maven项目,删掉scr作为父工程。在父工程的pop.xml中导入mybatis、mysql以及Junit 的jar包。
org.mybatis
mybatis
3.4.5
mysql
mysql-connector-java
5.1.47
junit
junit
4.12
test
根据文档,创建MybatisUtils工具类获取SqlSessionFactory对象。 public class MybatisUtils {
//工具类
public static SqlSessionFactory sqlSessionFactory;
static{
try {
//使用mybatis第一步 获取sqlsqlSessionFactory对象
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
//既然有了 SqlSessionFactory,顾名思义,我们可以从中获得 SqlSession 的实例。
//SqlSession 提供了在数据库执行 SQL 命令所需的所有方法
public static SqlSession getSqlsession () {
SqlSession sqlSession = sqlSessionFactory.openSession();
return sqlSession;
}
} 编写对应的配置文件mybatis-config.xml,来连接数据库,并为每一个mapper.xml进行注册。(有点类似之前的servlet-mapping,报道的感觉) 接下来编写代码,首先写实体类
package com.liang.pojo;
//实体类
public class User {
//与数据库中的表字段一一对应
private int id;
private String name;
private String psd;
//无参构造和有参构造
public User() {
}
public User(int id, String name, String psd) {
this.id = id;
this.name = name;
this.psd = psd;
}
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 getPsd() {
return psd;
}
public void setPsd(String psd) {
this.psd = psd;
}
//重写toString
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + ''' +
", psd='" + psd + ''' +
'}';
}
} 编写对应的接口 public interface Userdao {
List getuserlist();
} 编写mapper.xml配置文件,来代替之前的实现类。其中:namespace绑定接口、id绑定接口中的方法,标签体专注于写sql语句,返回值类型resultType专注于返回值类型。 编写测试类进行测试。调用方法即可。从 SqlSessionFactory 中获取 SqlSession【此处通过MybatisUtils工具类实现】,调用getMapper方法。其中每次收到 HTTP 请求,就可以打开一个 SqlSession,返回一个响应后,就关闭它。 这个关闭操作很重要,为了确保每次都能执行关闭操作,你应该把这个关闭操作放到 finally 块中。
public class userdaotest {
SqlSession sqlSession ;
@Test
public void test(){
try{
//获取sqlSession对象
sqlSession = MybatisUtils.getSqlsession();
//执行SQL 获得接口就可,因为配置文件里有接口的路径
Userdao mapper = sqlSession.getMapper(Userdao.class);
//可以执行里面的方法了
List getuserlist = mapper.getuserlist();
//小技巧 getuserlist.for就可得到增强for
for (User user : getuserlist) {
System.out.println(user);
}
}catch (Exception e){
e.printStackTrace();
}finally {
//关闭
sqlSession.close();
}
}
} 最后的成果:
可能遇到的问题:
1、xml不能有中文注释【本博客为了便于理解 xml中加了中文注解 运行时需要删除】
2、useSSL=false
3、MybatisUtils.java里面,原来是
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
改成——sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); 去了最前面的声明,因为前面 已经声明过了,private static SqlSessionFactory sqlSessionFactory;//提升作用域!!! 不然会报错 空指针异常
4、终于成功打印了,但是打印的是地址???因为要重写实体类的toString方法,就行了,打印输出的就是你怎么重写的内容!!
5.resources Mapper中的路径必须用/
namespace绑定接口必须用. 不能用/
6.编译后发现target目录没有出现,将Show Excluded Files勾选上即可
7.报错:java.lang.ExceptionInInitializerError
原因:查看生成的target目录,我们发现mapper.xml没有到对应的地方。这是由于Maven约定大于配置,所以我们写的配置文件存在无法被导出或生效的问题。【默认的资源配置文件放在resource目录下,但如果我们放到了java目录下,无法导出,需要手动配置资源过滤】
解决方法:在父工程和子工程的pop.xml中均添加如下代码,
热门相关搜索路由器设置 木托盘 宝塔面板 儿童python教程 心情低落 朋友圈 vim 双一流学科 专升本 我的学校 日记学校 西点培训学校 汽修学校 情书 化妆学校 塔沟武校 异形模板 西南大学排名 最精辟人生短句 6步教你追回被骗的钱 南昌大学排名 清朝十二帝 北京印刷学院排名 北方工业大学排名 北京航空航天大学排名 首都经济贸易大学排名 中国传媒大学排名 首都师范大学排名 中国地质大学(北京)排名 北京信息科技大学排名 中央民族大学排名 北京舞蹈学院排名 北京电影学院排名 中国戏曲学院排名 河北政法职业学院排名 河北经贸大学排名 天津中德应用技术大学排名 天津医学高等专科学校排名 天津美术学院排名 天津音乐学院排名 天津工业大学排名 北京工业大学耿丹学院排名 北京警察学院排名 天津科技大学排名 北京邮电大学(宏福校区)排名 北京网络职业学院排名 北京大学医学部排名 河北科技大学排名 河北地质大学排名 河北体育学院排名


![Mybatis的配置与使用[FirstDemo] Mybatis的配置与使用[FirstDemo]](http://www.mshxw.com/aiimages/31/781670.png)
