文章目录
- 1. 创建maven项目
- 2. 导入Mybatis和MySQL需要的jar包
- 3.创建实体类(这里我们使用学生类Student)
- 4. 为实体类配置数据库信息(Student类与student表的映射)
- 5. 创建实体类的mapper映射文件(StudentMapper接口以及StudentMapper.xml可以理解为接口的实现)
- 6. 配置Mybatis文件(文件名字可以命名为:mybatis-config.xml)
- 7. 创建SqlSessionFactory工厂类(这是为了读取配置文件,执行sql语句,并且可以减少代码的冗余)
- 8. 运行测试
1. 创建maven项目
注意:建立maven项目前,电脑要已经下载好了maven并完成了配置
创建好之后是这个样子
我们可以在里面创建实体类、测试类、接口类所在的包,为了后续的方便可以参考我是如何创建的,创建好之后是这个样子:
2. 导入Mybatis和MySQL需要的jar包
因为我们创建的是Maven项目,我们只需要在pom文件里面导入相应的依赖,
代码如下
<dependencies>
<!--mybatis的依赖-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.3.0</version>
</dependency>
<!--mysql的依赖-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.29</version>
</dependency>
</dependencies>
添加好依赖之后点击刷新,创建好之后是这个样子
3.创建实体类(这里我们使用学生类Student)
在entity下面创建java类,并命名为Student,代码如下
package com.HaiMeng.entity;
public class Student {
private int id;
private String name;
private int age;
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 int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
'}';
}
}
4. 为实体类配置数据库信息(Student类与student表的映射)
我们首先创建mybatis数据库(也可以自己起名字)在该数据库下面创建student表,命令字符创建代码:
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for `student`
-- ----------------------------
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
`id` int(10) NOT NULL auto_increment,
`name` varchar(10) NOT NULL,
`age` int(10) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=gbk;
-- ----------------------------
-- Records of student
-- ----------------------------
INSERT INTO student VALUES ('1', '王五', '1001');
我们可以在navicat lite进行查看
到这里我们的Student类和student的表的映射已经创建好了
接着在resources下面创建一个config.properties文件,用来存放我们的数据库的信息:
database.driver=com.mysql.jdbc.Driver
database.url=jdbc:mysql://localhost:3306/mybatis
database.username=root
database.password=123456
到这里我们已经配置好数据库了
5. 创建实体类的mapper映射文件(StudentMapper接口以及StudentMapper.xml可以理解为接口的实现)
- 在mapper下面创建StudentMapper
- 在resources/mapper下面创建StudentMapper.xml(可以理解为StudentMapper的实现)
StudentMapper代码如下
package com.HaiMeng.mapper;
import com.HaiMeng.entity.Student;
public interface StudentMapper {
// 因为创建的是接口,所以里面是方法
// 尽然是方法,那么我们接下来就是要实现它
// 怎么实现呢???
// 这里是通过一个StudentMapper.xml文件进行实现的
public Student getStudent(long id);
}
StudentMapper.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="com.HaiMeng.mapper.StudentMapper">
<!--getStudent得到实现,增删改查都可以在mapper标签内进行实现,我们这里是查询所以学生-->
<select id="getStudent" parameterType="long" resultType="com.HaiMeng.entity.Student">
select id, name, age
from student
where id = #{id}
</select>
</mapper>
有可能会有不知道怎么创建StudentMapper.xml文件(这里简单的介绍一下,因为下面还需要创建mybatis-config.xml文件,知道如何创建的可以跳过这一部分)
首先进入:
File->Setting->File and code templates
代码模板如下:
<?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="com.HaiMeng.mapper.StudentMapper">
<!--getStudent得到实现,增删改查都可以在mapper标签内进行实现,我们这里是查询所以学生-->
<select id="getStudent" parameterType="long" resultType="com.HaiMeng.entity.Student">
select id, name, age
from student
where id = #{id}
</select>
</mapper>
这个时候我们再去点击新建,我们就会发现我们有一个这样的模板,再以后需要的时候就可以快速的创建,只需要再mapper标签内对接口里面的方法进行实现就可。
到此StudentMapper和StudentMapper.xml文件都创建完了
6. 配置Mybatis文件(文件名字可以命名为:mybatis-config.xml)
在resources下面创建mybatis-config.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>
<properties resource="config.properties"/>
<typeAliases>
<package name=""/>
</typeAliases>
<!-- 配置环境-->
<environments default="mysql">
<!-- 配置MySQL的环境-->
<environment id="mysql">
<!-- 配置事务的类型-->
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<!-- 配置连接数据库的四个基本信息-->
<property name="driver" value="${database.driver}"/>
<property name="url" value="${database.url}"/>
<property name="username" value="${database.username}"/>
<property name="password" value="${database.password}"/>
</dataSource>
</environment>
</environments>
<!-- 指定映射文件的位置,映射文件指的是每个DAO独立的配置文件-->
<mappers>
<mapper resource="mapper/StudentMapper.xml"/>
</mappers>
</configuration>
到这里,mybatis-config.xml就配置好了
7. 创建SqlSessionFactory工厂类(这是为了读取配置文件,执行sql语句,并且可以减少代码的冗余)
在utils下面创建SqlSessionFactory工厂类,代码如下
package com.HaiMeng.utils;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
public class SqlSessionFactory {
private final static Class<SqlSessionFactory> lock= SqlSessionFactory.class;
private static org.apache.ibatis.session.SqlSessionFactory sqlSessionFactory=null;
private SqlSessionFactory(){};
//会话工厂
public static org.apache.ibatis.session.SqlSessionFactory getSqlSessionFactory() {
//
synchronized (lock) {
if (sqlSessionFactory != null) {
return sqlSessionFactory;
}
// mybatis配置文件的名字
String resource = "mybatis-config.xml";
InputStream inputStream;
try {
//读取配置文件
inputStream = Resources.getResourceAsStream(resource);
//创建SqlSessionFactory工厂
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
return null;
}
return sqlSessionFactory;
}
}
//使用工厂生产Sqlsession对象
public static SqlSession openSqlSession(){
if (sqlSessionFactory==null){
getSqlSessionFactory();
}
return sqlSessionFactory.openSession();
}
}
8. 运行测试
在test/java下面创建测试类TestMybatis进行测试,代码如下:
import com.HaiMeng.mapper.StudentMapper;
import com.HaiMeng.utils.SqlSessionFactory;
import org.apache.ibatis.session.SqlSession;
public class TestMybatis {
public static void main(String[] args){
SqlSession sqlSession= SqlSessionFactory.openSqlSession();
StudentMapper studentMapper=sqlSession.getMapper(StudentMapper.class);
System.out.println(studentMapper.getStudent(1).toString());
}
}
到这里我们的整个项目已经写完了,我们可以运行TestMybatis看看效果
可以看到,成功从数据库里面查询到了学生。到此我们整个Mybatis配置完成,并顺利运行。
最后我们来看一下我们项目的整体结构:
大家有什么问题可以在下面留言,一起进步,共同成长!!!!