第2章 Mybatis 框架快速⼊⻔

本文介绍了MyBatis框架的快速入门,包括从官网下载Mybatis,配置pom.xml,编写User实体类,创建IUserDao接口及映射文件,设置SqlMapConfig.xml,最后通过测试类展示查询所有用户的功能。此外,还补充了基于注解的Mybatis使用方法,只需在接口上添加@Select注解,并调整SqlMapConfig.xml配置。

2 Mybatis 框架快速⼊⻔

通过前⾯的学习,我们已经能够使⽤所学的基础知识构建⾃定义的 Mybatis 框架了。这个过程是基本功的考

验,我们已经强⼤了不少,但现实是残酷的,我们所定义的 Mybatis 框架和真正的 Mybatis 框架相⽐,还是显得

渺⼩。⾏业内所流⾏的 Mybatis 框架现在我们将开启学习。

2.1 Mybatis 框架开发的准备

2.1.1 官⽹下载 Mybatis 框架

从百度中“mybatis download”可以下载最新的 Mybatis 开发包。
在这里插入图片描述

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8222xAEX-1630898039467)(C:\Users\DELL\AppData\Roaming\Typora\typora-user-images\image-20210906110859601.png)]

我们所使⽤的 Mybatis 版本是 3.4.5 版本。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aIyOKFRL-1630898039468)(C:\Users\DELL\AppData\Roaming\Typora\typora-user-images\image-20210906110921011.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jbUjLSBx-1630898039470)(C:\Users\DELL\AppData\Roaming\Typora\typora-user-images\image-20210906110933724.png)]

2.2.2 添加 Mybatis3.4.5 的坐标

在 pom.xml ⽂件中添加 Mybatis3.4.5 的坐标,如下:

<dependencies> 

<dependency> 

<groupId>org.mybatis</groupId><artifactId>mybatis</artifactId> 

<version>3.4.5</version>

</dependency> 

<dependency> 

<groupId>junit</groupId> 

<artifactId>junit</artifactId> 

<version>4.10</version> 

<scope>test</scope>

</dependency> 

<dependency> 

<groupId>mysql</groupId> 

<artifactId>mysql-connector-java</artifactId> 

<version>5.1.6</version> 

<scope>runtime</scope>

</dependency> 

<dependency> 

<groupId>log4j</groupId> 

<artifactId>log4j</artifactId> 

<version>1.2.12</version>

</dependency>

</dependencies>

2.2.3 编写 User 实体类

package com.soft.domain;

import java.util.Date;public class User {

 private long id;

 private String username;

 //这⾥要改成java的类型

 private Date birthday;

 private String sex;

 private String address;

 public long getId() {

 return id;

 }

 public void setId(long id) {

 this.id = id;

 }

 public String getUsername() {

 return username;

 }

 public void setUsername(String username) {

 this.username = username;

 }

 public Date getBirthday() {

 return birthday;

 }

 public void setBirthday(Date birthday) {

 this.birthday = birthday;

 }

 public String getSex() {

 return sex;

 }

 public void setSex(String sex) {

 this.sex = sex;

 }

 public String getAddress() {

 return address;

 } public void setAddress(String address) {

 this.address = address;

 }

}


2.2.4 编写持久层接⼝ IUserDao

IUserDao 接⼝就是我们的持久层接⼝(也可以写成 UserDao 或者 UserMapper),具体代码如下:

public interface IUserDao {

/**

\* 查询所有⽤户

\* **@return**

*/

List<User> findAll();

}

2.2.5 编写持久层接⼝的映射⽂件 IUserDao.xml

要求:

**创建位置:**必须和持久层接⼝在相同的包中。

**名称:**必须以持久层接⼝名称命名⽂件名,扩展名是.xml

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VfADvR1m-1630898039471)(C:\Users\DELL\AppData\Roaming\Typora\typora-user-images\image-20210906111123017.png)]

<!DOCTYPE mapper

 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<!--namespace对象的映射的接⼝-->

<mapper namespace="com.soft.dao.IUserDao">

 <!--id对应接⼝的⽅法-->

 <!--resultType把结果封装对象类型-->

 <select id="findAll" resultType="com.soft.domain.User">

 select * from USER;

 </select>

</mapper>

2.2.6 编写 SqlMapConfig.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>
 <!-- 配置 mybatis 的环境 -->
 <environments default="development">
 <!-- 配置 mysql 的环境 -->
 <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/smm"/>
 <property name="username" value="root"/>
 <property name="password" value="12345678"/>
 </dataSource>
 </environment>
 </environments>
 <!-- 告知 mybatis 映射配置的位置 -->
 <mappers>
 <mapper resource="com/soft/dao/IUserDao.xml"/>
 </mappers>
</configuration>

2.2.7 编写测试类

public class MyBatisTest {
 public static void main(String[] args) throws IOException {
 //1.读取配置⽂件
 InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
 //2.创建 SqlSessionFactory 的构建者对象
 SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
 //3.使⽤构建者创建⼯⼚对象 SqlSessionFactory
 SqlSessionFactory factory = builder.build(in);
 //4.使⽤ SqlSessionFactory ⽣产 SqlSession 对象
 SqlSession session = factory.openSession();
 //5.使⽤ SqlSession 创建 dao 接⼝的代理对象
 IUserDao userDao = session.getMapper(IUserDao.class);
 //6.使⽤代理对象执⾏查询所有⽅法
 List<User> users = userDao.findAll();
 for (User user : users) {
 System.out.println(user);
 }
 //7.释放资源
 session.close();
 in.close();
 }
}

2.3 ⼩结

通过快速⼊⻔示例,我们发现使⽤ mybatis 是⾮常容易的⼀件事情,因为只需要编写 Dao 接⼝并且按照

mybatis 要求编写两个配置⽂件,就可以实现功能。远⽐我们之前的 jdbc ⽅便多了。(我们使⽤注解之后,将变得

更为简单,只需要编写⼀个 mybatis 配置⽂件就够了。)

2.4 补充(基于注解的 mybatis 使⽤)

2.4.1 在持久层接⼝中添加注解

package com.soft.dao;
import com.soft.domain.User;
import org.apache.ibatis.annotations.Select;
import java.util.List;
public interface IUserDao {
 @Select("select * from user")
 List<User> findAll();
}

2.4.2 修改 SqlMapConfig.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>
 <!-- 配置 mybatis 的环境 -->
 <environments default="development">
 <!-- 配置 mysql 的环境 -->
 <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/smm"/>
 <property name="username" value="root"/>
 <property name="password" value="12345678"/>
 </dataSource>
 </environment>
 </environments>
 <!-- 告知 mybatis 映射配置的位置 -->
 <mappers>
 <!--<mapper resource="com/soft/dao/IUserDao.xml"/>-->
 <mapper class="com.soft.dao.IUserDao"/>
 </mappers>
</configuration>

2.4.3 注意事项:

username" value=“root”/>



```

2.4.3 注意事项:

在使⽤基于注解的 Mybatis 配置时,请移除 xml 的映射配置(IUserDao.xml)

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值