Mybatis学习笔记(一)--快速入门

一、Mybatis介绍

  MyBatis 是一款优秀的持久层框架,它支持自定义 SQL存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML注解(Annotation)来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

二、Mybatis快速入门_通过Maven来构建项目

2.1、准备开发环境

1.创建Maven工程,目录结构如下图所示

2. 在pom.xml文件中引入依赖的代码

<dependencies>
        <!--引入mybatis依赖-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.5</version>
        </dependency>

        <!--引入mysql驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.32</version>
        </dependency>

        <!--引入测试的依赖-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
        
</dependencies>

【需要引入的依赖代码,参考:https://mvnrepository.com/】

3.创建数据库和表

SQL脚本如下:

 1 USE mybatis;
 2 
 3 CREATE TABLE users(
 4     id INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
 5     NAME VARCHAR(20) NOT NULL,
 6     age INT NOT NULL
 7 );
 8 
 9 INSERT INTO users(NAME,age) VALUES('张三',18);
10 INSERT INTO users(NAME,age) VALUES('李思',28);

到此,前期开发环境准备工作全部完成。

 

2.2、使用Mybatis查询表中的数据_使用xml配置完成

1.添加mybatis的配置文件sqlConfig.xml

 

 

 sqlConfig.xml文件中的内容如下所示:

 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"/>
12                 <property name="username" value="root"/>
13                 <property name="password" value="root"/>
14             </dataSource>
15         </environment>
16     </environments>
17 </configuration>

2.定义数据库表中所对应的实体类,如下图所示:

 

 

 User类的代码如下:

 1 package com.yif.pojo;
 2 
 3 import java.io.Serializable;
 4 
 5 public class User implements Serializable {
 6 
 7     //实体类的属性与数据库中的字段名称一一对应
 8     private Integer id;
 9     private String name;
10     private Integer age;
11 
12     public Integer getId() {
13         return id;
14     }
15 
16     public void setId(Integer id) {
17         this.id = id;
18     }
19 
20     public String getName() {
21         return name;
22     }
23 
24     public void setName(String name) {
25         this.name = name;
26     }
27 
28     public Integer getAge() {
29         return age;
30     }
31 
32     public void setAge(Integer age) {
33         this.age = age;
34     }
35 
36     @Override
37     public String toString() {
38         return "User{" +
39                 "id=" + id +
40                 ", name='" + name + '\'' +
41                 ", age=" + age +
42                 '}';
43     }
44 }

3.定义操作users表的sql映射文件UserDao.xml

 

 UserDao.xml文件的内容如下:

 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 <mapper namespace="com.yif.dao.UserDao">
 6 
 7     <!--
 8         在select标签中编写查询的SQL语句, 设置select标签的id属性为getUserById,id属性值必须是唯一的,不能够重复
 9         使用parameterType属性指明查询时使用的参数类型,resultType属性指明查询返回的结果集类型
10         resultType="com.yif.pojo.User"就表示将查询结果封装成一个User类的对象返回
11         User类就是users表所对应的实体类
12     -->
13     <select id="getUserById" resultType="com.yif.pojo.User" parameterType="int">
14         select * from users where id = #{id}
15     </select>
16 </mapper>

4.在sqlConfig.xml文件中注册UserDao.xml文件

 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"/>
12                 <property name="username" value="root"/>
13                 <property name="password" value="root"/>
14             </dataSource>
15         </environment>
16     </environments>
17 
18     <mappers>
19         <package name="com.yif.dao"></package>
20     </mappers>

5.编写测试代码:执行定义的sql语句

 

 UserDao代码如下:

 1 package com.yif.dao;
 2 
 3 import com.yif.pojo.User;
 4 
 5 public interface UserDao {
 6 
 7     /**
 8      * 根据id查询用户信息
 9      * @param id
10      * @return
11      */
12     public User getUserById(Integer id);
13 
14     /**
15      * 向数据库中添加用户信息
16      * @param user
17      * @return
18      */
19     public int addUser(User user);
20 
21     /**
22      * 更新数据库中的用户信息
23      * @param user
24      * @return
25      */
26     public int updateUser(User user);
27 
28     /**
29      * 删除数据库中指定的用户信息
30      * @param id
31      * @return
32      */
33     public int deleteUserById(Integer id);
34 }

MybatisTest测试代码如下

 1  @Test
 2     public void testGetUserById(){
 3         InputStream is = MybatisTest.class.getClassLoader().getResourceAsStream("sqlConfig.xml");
 4         SqlSessionFactory build = new SqlSessionFactoryBuilder().build(is);
 5         SqlSession session = build.openSession();
 6         UserDao userDao = session.getMapper(UserDao.class);
 7         User user = userDao.getUserById(1);
 8         System.out.println(user);
 9 
10     }

运行结果如下:

 

 

【踩坑记录】

1、操作users表的sql映射文件的目录结构以及文件名必须与UserDao的目录结构和名称一致,否则会报错:

 

 报错记录:

 

posted on 2020-08-03 22:36  jyf上善若水  阅读(117)  评论(0)    收藏  举报