0%

【Mybatis】Mybatis入门

mybatis初步入门

一、mybatis认识


二、mybatis下载


三、利用mybatis进行查询

3.1 旧方法操作步骤

  • (1)导入相关依赖jar包
    • mybatis
    • 数据库连接驱动,mysql举例:mysql-connection-java
  • (2)数据创建表,Java创建对应的类
1
2
3
4
5
6
表创建语句
create table tbl_employee(
id int(11) primary key auto_increment,
last_name varchar(255),
gender char(1),
email varchar(255))
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//类
public class Employee {

private Integer id;
private String lastName;
private char gender;
private String email;

//省略相应的get、set方法

@Override
public String toString() {
return "Employee{" +
"id=" + id +
", lastName='" + lastName + '\'' +
", gender=" + gender +
", email='" + email + '\'' +
'}';
}
}
  • (3)创建sql映射文件
    • 配置文件信息可在官方文档进行复制
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?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">
<!--
namespace:名称空间(随意,不重名即可)
id:sql唯一标识(随意,不重名即可)
resultType:返回值类型
#{id}:从传递过来的参数中,取出id值
**若sql字段名和类的属性不一致,使用sql语句的别名方式解决**
-->
<!--<mapper namespace="xxxx">-->
<mapper namespace="Interface.EmployeeMapper">
<select id="getEmpById" resultType="JavaBean.Employee">
select id, last_name lastName, gender, email
from tbl_employee
where id = #{id}
</select>
</mapper>
  • (4)创建全局配置文件,并与映射文件关联
    • 配置文件信息可以复制官方文档
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?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="com.mysql.cj.jdbc.Driver"/>
<!--连接数据库信息-->
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?serverTimezone=GMT%2B8"/>
<property name="username" value="root"/>
<property name="password" value="123"/>
</dataSource>
</environment>
</environments>

<!--将写好的sql映射文件注册到全局配置文件中-->
<mappers>
<mapper resource=".\\config\\EmployeeMapper.xml"/>
</mappers>

</configuration>
  • (5)编写执行sql语句代码
    • (1)创建全局配置文件的输入流:InputStream inputStream = Resources.getResourceAsStream(“文件路径”);
    • (2)创建SqlSessionFactory对象:SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(inputStream);
    • (3)根据SqlSessionFactory获取SqlSession对象:SqlSession sqlSession = ssf.openSession();
    • (4)SqlSession对象调用方法,执行增删改查操作,若是查操作,会自动将查询结果封装到类中
    • (5)资源关闭
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@Test
public void test1() throws IOException {
//1、根据xml配置文件(全局配置文件),创建一个sqlSessionFactory对象
String resource = ".\\config\\mybatisConfig.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(inputStream);

//2.获取sqlSession实例,能直接执行已经映射的sql语句
SqlSession sqlSession = ssf.openSession();
//参数一:sql的唯一标识,参数二:执行sql需要的参数
Employee o = sqlSession.selectOne("mybatis.EmployeeMapper.getEmpById", 1);
System.out.println(o);

//3.关闭资源
sqlSession.close();
}

3.2 新方法操作步骤

  • (1)在旧方法上进行修改
  • (2)创建一个接口
1
2
3
4
//接口
public interface EmployeeMapper {
public abstract Employee getEmpById(int i);
}
  • (3)修改sql映射文件
    • namespace:使用接口的全类名
    • id:接口方法
1
2
3
4
5
6
7
<mapper namespace="Interface.EmployeeMapper">
<select id="getEmpById" resultType="JavaBean.Employee">
select id, last_name lastName, gender, email
from tbl_employee
where id = #{id}
</select>
</mapper>
  • (4)修改执行sql的代码
    • 获取sqlSession对象之后
    • 通过getMapper方法,获取接口实现类对象
    • 调用接口方法执行sql语句
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 @Test
public void test2() throws Exception{
//1.获取sqlSessionFactory对象,将方法封装到方法中
SqlSessionFactory ssf = MybatisUtils.getSqlSessionFactory();

//2,获取sqlSession对象
SqlSession ss = ssf.openSession();

//3.获取接口实现类对象
//一旦接口和sql映射文件进行映射,会自动创建一个代理对象,代理对象会执行增删改查操作
EmployeeMapper mapper = ss.getMapper(EmployeeMapper.class);

Employee empById = mapper.getEmpById(2);
System.out.println(empById);

//4.资源关闭
ss.close();
}

四、总结

  • (1)接口式编程

    • 原生 Dao ====> DaoImpl
    • Mtbatis Mapper ====> xxMapper.xml
  • (2)sqlSession代表和数据库的一次会话;用完必须关闭。

  • (3)sqlSession和Connection一样,都是非线程安全。每次使用都应该去获取新的对象

  • (4)mapper接口灭有实现类,但mybatis会为这个接口生成一个代理对象

  • (5)两个重要配置文件:

    • mybatis全局配置文件,包含数据库连接池信息,事务管理器信息等…系统运行环境
    • sql映射文件,保存了每一个sql语句的映射信息