1.开发环境准备
学习编程是一门实践科学,只有一边写代码一边学习才会有好的效果,所以需要搭建一个可以以运行的学习环境,以便我们实践和探索,所以本片文章代领大家来配置开发环境。
2.下载MyBatis
我们直接使用Mavne进行。找到MyBatis在Maven的坐标。
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
3.集成开发工具(IDEA)的使用
3.1创建Maven项目
3.2编辑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>com.pingchas</groupId>
<artifactId>mybatis-learn</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
</dependencies>
</project>
3.3调整编译配置
4.MyBatis的一些概念
- SqlSessionFactoryBuilder(构造器): 它会根据配置信息或者代码来生成SqlSessionFactory(工厂接口)
- SqlSessionFactory: 依靠工厂来生成SqlSession(会话)
- SqlSession: 是一个既可以发送SQL去执行并返回结果,也可以获取Mapper的接口
- SqlMapper: 它是MyBatis新设计的组件,它是由一个Java接口和XML文件(或注解)构成的,需要给它对应的SQL和映射规则。他负责发送SQL去执行,并返回结果。
5.使用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>
<typeAliases>
<typeAlias type="com.demo.po.Role" alias="Role"/>
</typeAliases>
<!--环境配置,连接的数据库,这里使用的是MySQL-->
<environments default="mysql">
<environment id="mysql">
<!--指定事务管理的类型,这里简单使用Java的JDBC的提交和回滚设置-->
<transactionManager type="JDBC"></transactionManager>
<!--dataSource 指连接源配置,POOLED是JDBC连接对象的数据源连接池的实现-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://127.0.0.1:3306/mybbs"></property>
<property name="username" value="root"></property>
<property name="password" value="root"></property>
</dataSource>
</environment>
</environments>
<mappers> <!--这是告诉Mybatis区哪找持久化类的映射文件,对于在src下的文件直接写文件名, 如果在某包下,则要写明路径,如:com/mybatistest/config/User.xml-->
<mapper resource="User.xml"></mapper>
</mappers>
</configuration>
说明:
- 这里配置了一个别名Role,它代表了com.demo.po.Role,这样我们就可以在MyBatis上下文中引用它了。
- 我们配置了环境,它包含以下两方面内容。
(1)采用JDBC的事务管理模式。
(2)数据库的连接信息
-定义了映射器
1.生成SqlSessionFactory
//读取配置文件
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
//初始化mybatis,创建SqlSessionFactory类实例
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
2.创建SqlSession
//创建Session实例
SqlSession session = sqlSessionFactory.openSession();
3.实体关系映射
package com.bean;
public class Student {
private String sno;
public String getSno() {
return sno;
}
public void setSno(String sno) {
this.sno = sno;
}
public String getsName() {
return sName;
}
public void setsName(String sName) {
this.sName = sName;
}
public String getsSex() {
return sSex;
}
public void setsSex(String sSex) {
this.sSex = sSex;
}
public String getsAge() {
return sAge;
}
public void setsAge(String sAge) {
this.sAge = sAge;
}
public String getsDept() {
return sDept;
}
public void setsDept(String sDept) {
this.sDept = sDept;
}
public String sName;
public String sSex;
public String sAge;
public String sDept;
public String getcId() {
return cId;
}
public void setcId(String cId) {
this.cId = cId;
}
private String cId;
public Student(String sno, String sName, String sSex, String sAge,
String sDept,String cId) {
super();
this.sno = sno;
this.sName = sName;
this.sSex = sSex;
this.sAge = sAge;
this.sDept = sDept;
this.cId=cId;
}
public Student() {
super();
}
}
4.编写sql
<?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.bean.StudentMapping">
<select id="getStudent" parameterType="String" resultType="com.bean.Student">
select * from student where sno = #{sno}
</select>
</mapper>
3.查询单条记录
String statement="com.bean.StudentMapping.getStudent"
Student u = (Student)session.selectOne(statement, "111");