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的目录结构和名称一致,否则会报错:

报错记录:

浙公网安备 33010602011771号