首先在idea中新建一个模块,由于只是mybatis的初步使用和配置只需要勾选以下选项即可
模块新建好以后,在main目录下新建一个resources文件夹,新建一个mybatis.xml文件,如下图
接着查阅mybatis文档,就可以知道需要在该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>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="org/mybatis/example/BlogMapper.xml"/>
</mappers>
</configuration>
下面是每个板块负责的功能及所需的值的详细注释
<?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>
<!--环境配置:数据库的连接信息
default:必须和某个environment的id值一样
告诉mybatis哪个数据库的连接信息。也就是访问哪个数据库
-->
<!---->
<environments default="development">
<!--environment:一个数据库信息的配置,环境
id:一个唯一值,自定义,表示环境的名称
-->
<environment id="development">
<!--
transactionManger:mybatis的事务类型
type:JDBC(表示使用jdbc中的Connercion对象的commit,rollback)
-->
<transactionManager type="JDBC"/>
<!--
dataSource:表示数据源,连接数据库的
type:表示数据源的类型,pooled表示使用连接池
-->
<dataSource type="POOLED">
<!--
driver,user,username,password是固定的,不能自定义
-->
<!-- 数据库连接的驱动类名 -->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<!-- 连接数据库的url字符串-->
<property name="url" value="<!--自行填写-->"/>
<property name="username" value="<!--自行填写-->"/>
<property name="password" value="<!--自行填写-->"/>
</dataSource>
</environment>
</environments>
<!--sql mapper(sql映射文件)的位置-->
<mappers>
<!--一个mapper标签指定一个文件的位置
从类路径开始的开始的路径信息。target/classes(类路径)
-->
<mapper resource="<!--自行填写-->"/>
</mappers>
</configuration>
<!--
mybatis的主配置文件:主要定义了数据库的配置信息,sql映射文件的位置
1.约束条件
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
-->
接着我们来配置pom.xml文件(其实应该一开始配置的)
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>cn.edu.swust</groupId>
<artifactId>ch01-hello-mybatis</artifactId>
<version>1.0-SNAPSHOT</version>
<name>ch01-hello-mybatis</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<!--mybatis依赖-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
<!--mysql驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.49</version>
</dependency>
</dependencies>
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
</project>
这里大部分是我采用的驱动和mybatis的版本,可以根据自己的需要调整版本
紧接着按照这样的目录格式生成java文件(目录格式自定义,推荐如此)
编写如下代码
public interface StudentDao {
//查询student表的所有数据
public List<Student> selectStudents();
}
StudentXml
<?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="cn.edu.swust.dao.StudentDao">
<!--
select:表示查询操作
id:你要执行的sql语法的唯一标识,mybatis会使用这个id的值来找到要执行的sql语句
可以自定义,但是要求使用接口中的方法名称
resultType:表示结果类型的,是sql语句执行后得到Resultset,遍历这个ResultSet得到java对象的类型
值写的类型的全限定名称
-->
<select id="selectStudents" resultType="cn.edu.swust.domain.Student">
select id,name,email,age from student order by id
</select>
</mapper>
<!--
sql映射文件:写sql语句的,mybatis会执行这些sql
1.指定约束文件
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTO Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"
mybatis-3-mapper.dtd是约束文件的名称,扩展名是dtd的
2.约束文件作用:限制,检查在当前文件中出现的标签,属性必须符合mybatis文件要求
3.mapper 是当前文件的根标签,必须的
namespace:叫做命名空间,唯一值得,可以是自定义的字符串
要求你使用dao接口的全限定名称
4.在当前文件中,可以使用特定的标签,表示数据库的特定操作
<select>:表示执行查询
<update>:表示更新数据库的操作,就是在<update>标签中,写的是update sql语句
<insert>:表示插入,放的是insert语句
<delete>
-->
//定义属性,目前要求是属性名和列名一样
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 "Student{" +
"id=" + id +
", name='" + name + '\'' +
", email='" + email + '\'' +
", age=" + age +
'}';
}
然后就可以点击meaven
点击complie进行编译
在MyApp编写如下代码
public class MyApp {
public static void main(String[] args) throws IOException {
//访问mybatis读取student数据
//1.定义mybatis主配置文件的名称,从类路径的根开始
String config="mybatis.xml";
//2.读取这个config表示的文件
InputStream in=Resources.getResourceAsStream(config);
//3.创建了SqlSessionFactoryBuilder对象
SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder();
//4.创建SqlSessionFactory对象
SqlSessionFactory factory=builder.build(in);
//5.【重要】获取SqlSession对象,从SqlSessionFactory中获取SqlSession
SqlSession sqlSession=factory.openSession();
//6.【重要】指定要执行的sql语句的标识。sql映射文件中的namespace+“,”+标签的id值
String sqlId="cn.edu.swust.dao.StudentDao"+"."+"selectStudents";
//7.执行sql语句,通过sqlId找到语句
List<Student> students=sqlSession.selectList(sqlId);
//8.输出结果
students.forEach(student -> System.out.println(student));
//9.关闭SqlSession对象
sqlSession.close();
}
}
然后就可以点击运行了(首先你的数据库中要有student这个表)