今天我们来学习一个案例,通过对这个案例的学习,掌握mybatis的方法
目录
1 使用MyBatis准备
2 搭建MyBatis项目八步
1.创建mysql数据库和表
2.在idea中创建一个空项目
3.修改pom.xml文件
4.创建一个实体类Student
5.创建Dao接口,定义操作数据库的方法
6.创建xml文件(mapper文件),写sql语句
7.创建mybatis的主配置文件(xml文件):有一个,放在resources目录下
8.创建测试的内容
3 MyBatis使用占位符
1 使用MyBatis准备
学习文档:
mybatis – MyBatis 3 | 入门
我们按照这个学习路线来学习
在学习此教程之前你需要会这些知识:Java基础,JDBC,Maven
2 搭建MyBatis项目八步
1.创建mysql数据库和表
数据库名:ssm;表名:student
插入一条数据:
2.在idea中创建一个空项目
然后输入项目名
创建完成之后,我们在里面添加Modules
创建一个Maven项目
输入名字:
一直点next直到创建完成项目,创建完成后我们来查看项目的结构
3.修改pom.xml文件
1)加入依赖:mybatis依赖,MySQL驱动,junit
junit junit4.13.2 test org.mybatis mybatis3.5.7 mysql mysql-connector-java8.0.26
2)在
src/main/java ***.xml false
4.创建一个实体类Student
首先创建一个实体包,创建一个Student实体类
定义属性,属性名和列名保持一致
package com.lu.entity;
public class Student {
//属性名和列名保持一致
private Integer id;
private String name;
private String email;
private Integer age;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "学生实体信息{" +
"id=" + id +
", name='" + name + ''' +
", email='" + email + ''' +
", age=" + age +
'}';
}
}
5.创建Dao接口,定义操作数据库的方法
创建dao包
代码如下:
package com.lu.dao;
import com.lu.entity.Student;
public interface StudentDao {
//查询一个学生
Student selectStudentById(Integer id);
}
6.创建xml文件(mapper文件),写sql语句
mybatis框架推荐是把sql语句和java代码分开
mapper文件:定义和dao接口在同一目录,一个表一个mapper文件
7.创建mybatis的主配置文件(xml文件):有一个,放在resources目录下
1)定义创建连接实例的数据源(DataSource)对象
2)指定其他mapper文件的位置
8.创建测试的内容
使用main方法,测试mybatis访问数据库
也可以使用junit访问数据库
代码如下:
package com.lu;
import com.lu.entity.Student;
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 java.io.IOException;
import java.io.InputStream;
public class MyTest {
//测试mybatis执行sql语句
@Test
public void testSelectStudentById() throws IOException {
//调用mybatis某个对象方法,执行mapper文件中的sql语句
//mybatis的个心累:SqlSessionFactory
//1.定义mybatis主配置文件的位置,从类路径开始的相对路径
String config = "mybatis";
//2.读取主配置文件,使用mybatis框架中的Resources类
InputStream inputStream = Resources.getResourceAsStream(config);
//3.创建SqlSessionFactory对象,使用SqlSessionFactoryBuilder类
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
//4.获取SqlSession对象
SqlSession session = factory.openSession();
//5.指定要执行的sql语句的id
// sql语句的id = namespave + "." + select|update|insert|delete标签的id属性值
String sqlId = "com.lu.dao.StudentDao" + "." + "selectStudentById";
//6.通过SqlSession的方法来执行sql语句
Student student = session.selectOne(sqlId);
System.out.println("使用mybatis来查询一个学生:" + student);
//7.关闭SqlSession对象
session.close();
}
}
控制台输出:
到这里我们已经实现了第一个MyBatis的例子
下面我们来修改一下代码,体验一下占位符
3 MyBatis使用占位符
我们修改StudentDao.xml文件中select语句
这样我们就使用了占位符,#{}
表示从Java程序中传入过来的数据
我们修改测试代码
Student student = session.selectOne(sqlId, 1001);
重新执行代码,得到一样的输出



