Mybatis的初步实现

0. 思路

搭建环境--->导入Mybatis--->编写代码--->测试

1. 搭建环境

搭建数据库:

1 CREATE DATABASE `mybatis`;
2 USE `mybatis`;
3 CREATE TABLE `user`(
4     `id` INT(20) NOT NULL,
5     `name` VARCHAR(30) DEFAULT NULL,
6     `pwd` VARCHAR(30) DEFAULT NULL,
7     PRIMARY KEY(`id`)
8 )ENGINE=INNODB DEFAULT charset=utf8;

添加数据

1 INSERT INTO `user` (`id`,`name`,`pwd`) VALUES (1,'张三','12345'),(2,'李四','123456');

2. 基于idea新建项目

2.1 创建项目File-->New Project-->maven

2.2  设置自己的maven

  Settings-->Build-->BuildTools-->Maven-->Maven home directory

   Maven主目录和用户设置文件需要配置成自己的maven路径

  maven下载地址:https://maven.apache.org/download.cgi

2.3 将创建号的Maven项目删除src文件夹,这样可以将刚创建的Maven项目变为父类,之后可在Maven项目中创建子模块

2.4 导入依赖

 1  <!-- 导入依赖-->
 2     <dependencies>
 3         <!-- mysql驱动-->
 4         <dependency>
 5             <groupId>mysql</groupId>
 6             <artifactId>mysql-connector-java</artifactId>
 7             <version>8.0.19</version>
 8         </dependency>
 9         <!-- mybatis-->
10         <dependency>
11             <groupId>org.mybatis</groupId>
12             <artifactId>mybatis</artifactId>
13             <version>3.5.5</version>
14         </dependency>
15         <!--junit-->
16         <dependency>
17             <groupId>junit</groupId>
18             <artifactId>junit</artifactId>
19             <version>3.8.1</version>
20         </dependency>

 父类导入依赖后创建的子模块也可以集成依赖

3. 创建模块(子模块)

3.1 编写mybatis核心配置文件

依据Mybatis的中文文档,进行mybatis的入门创建,网址为:https://mybatis.org/mybatis-3/zh/getting-started.html

XML 配置文件中包含了对 MyBatis 系统的核心设置

包括获取数据库连接实例的数据源(DataSource)以及决定事务作用域和控制方式的事务管理器(TransactionManager)。

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE configuration
 3         PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 4         "http://mybatis.org/dtd/mybatis-3-config.dtd">
 5 <configuration>
 6     <environments default="development">
 7         <environment id="development">
 8             <transactionManager type="JDBC"/>
 9             <dataSource type="POOLED">
10                 <property name="driver" value="com.mysql.jdbc.Driver"/>
11                 <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&amp;useUnicode=true&amp;characterEncoding=UTF-8"/>
12                 <property name="username" value="root"/>
13                 <property name="password" value="root"/>
14             </dataSource>
15         </environment>
16     </environments>
17     <mappers>
18         <mapper resource="com/dz/dao/UserMapper.xml"/>
19     </mappers>
20 </configuration>

 进入idea中的数据库连接,点击测试连接数据库,测试数据库是否连接成功

连接数据库时需要更改时区,将时区改为shanghai时区

选择架构中你需要连接的数据库,点击确定即可

在URL中获取对应的值

 <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&amp;useUnicode=true&amp;characterEncoding=UTF-8"/>

 

3.2 编写Mybatis应用文件

  1. 每一个Mybatis都以一个sqlSessionFactory实例为核心
  2. SqlSessionFactory可以获取SqlSession实例
  3. SqlSession可以进行数据的操作
 1 //每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为核心的
 2 //SqlSessionFactory-->SqlSession
 3 public class MybatisUtils {
 4     private static SqlSessionFactory sqlSessionFactory;
 5 
 6     static {
 7         try {
 8             //使用Mybatis获取SqlSessionFactory对象
 9             String resource = "mybatis-config.xml";
10             inputStream = Resources.getResourceAsStream(resource);
11             SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
12         } catch (IOException e) {
13             e.printStackTrace();
14         }
15     }
16 
17 
18     //既然有了 SqlSessionFactory,顾名思义,我们可以从中获得 SqlSession 的实例。
19 // SqlSession 提供了在数据库执行 SQL 命令所需的所有方法。你可以通过 SqlSession 实例来直接执行已映射的 SQL 语句。
20     public static SqlSession getSqlSession() {
21         return sqlSessionFactory.openSession();
22     }
23 }

4. 代码编写

4.1 实体类的编写  pojo

 1 public class User {
 2     private Integer id;
 3     private String name;
 4     private String pwd;
 5 
 6     public User() {
 7     }
 8 
 9     public User(Integer id, String name, String pwd) {
10         this.id = id;
11         this.name = name;
12         this.pwd = pwd;
13     }
14 
15     public Integer getId() {
16         return id;
17     }
18 
19     public void setId(Integer id) {
20         this.id = id;
21     }
22 
23     public String getName() {
24         return name;
25     }
26 
27     public void setName(String name) {
28         this.name = name;
29     }
30 
31     public String getPwd() {
32         return pwd;
33     }
34 
35     public void setPwd(String pwd) {
36         this.pwd = pwd;
37     }
38 
39     @Override
40     public String toString() {
41         return "User{" +
42                 "id=" + id +
43                 ", name='" + name + '\'' +
44                 ", pwd='" + pwd + '\'' +
45                 '}';
46     }
47 }

4.2 Dao接口 UserDao.interface

1 public interface UserDao {
2     List<User> getUserList();
3 }

4.3 接口实现类 UserMapper.xml,由之前的UserDaoImpl转变为一个Mapper的配置文件。

namespace绑定一个Dao或Mapper接口,用于连接接口和接口实现类

返回值类型需要些全限定类名

全限定类名:包名+类名

id值为Dao接口写的方法名

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE mapper
 3         PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 4         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 5 <!-- nameSpace绑定一个Dao或Mapper接口-->
 6 <mapper namespace="com.dz.dao.UserDao">
 7     <!-- 返回值类型为:全限定类名-->
 8     <select id="getUserList" resultType="com.dz.pojo.User">
 9     select * from mybatis.user
10   </select>
11 </mapper>

4.4 测试

 1 public class UserDaoTest {
 2     @Test
 3     public void test() {
 4         //获取SqlSession对象
 5         SqlSession sqlSession = MybatisUtils.getSqlSession();
 6         //方式一:getMapper
 7         UserMapper userDao = sqlSession.getMapper(UserMapper.class);
 8         List<User> userList = userDao.getUserList();
 9         for (User user : userList) {
10             System.out.println(user);
11         }
12         //关闭getSession
13         sqlSession.close();
14     }

 

4.5 注意

Maven由于它的约定大于配置,可能在开发过程中遇到我们写的配置文件,无法被导出或者生效的问题,尝试在Maven中加上如下配置。

 1 <!--在build中配置resources,来防止我们资源导出失败的问题-->
 2     <build>
 3         <resources>
 4             <resource>
 5                 <directory>src/main/resources</directory>
 6                 <includes>
 7                     <include>**/*.properties</include>
 8                     <include>**/*.xml</include>
 9                 </includes>
10                 <filtering>true</filtering>
11             </resource>
12 
13             <resource>
14                 <directory>src/main/java</directory>
15                 <includes>
16                     <include>**/*.properties</include>
17                     <include>**/*.xml</include>
18                 </includes>
19                 <filtering>true</filtering>
20             </resource>
21         </resources>
22     </build>

 

posted @ 2020-08-04 15:23  罗晓峥  阅读(184)  评论(0编辑  收藏  举报