Mybatis 学习笔记
Author: Titan
Start Date: 2020-05-04
Mybatis系列的学习笔记是为本人原创系列文章。
遵循 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议
转载需注明来源 Titan笔记 https://www.titan6.cn/
Mybatis的入门
介绍
摘取一段来自于百度百科的介绍:
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。
我认为,简单的来说,在进行持久层操作的过程中,原始的JDBC操作将会有繁琐的处理过程,而Mybatis正是解决了这个问题,使得程序员能够专注于查询本身,而不是一系列的重复配置代码。Mybatis能够将数据库查询集直接的映射为Java的对象集(一般来说是JavaBean对象)
Mybatis的环境搭建
Mybatis的环境搭建主要有以下几个步骤:
- 创建一个Maven项目
- 导入相关的Dependencies, 主要为 JDBC-Connector,Mybatis,可以根据需要加入日志记录的 Log4j 和单元测试的 junit 等。
- 创建映射数据库实体的实体类Bean和是实现DAO的接口
- 创建Mybatis的主配置文件 SqlMapConfig.xml
- 创建映射配置文件 Mappers.xml
一个入门案例
1. 设计数据表结构与数据如下
id | username | birthday | sex | address |
---|---|---|---|---|
41 | 老王 | 2018/2/27 17:47:08 | 男 | 北京 |
42 | 小二王 | 2018/3/2 15:09:37 | 女 | 北京东城 |
43 | 小二王 | 2018/3/4 11:34:34 | 女 | 河南郑州 |
45 | Titan | 2018/3/4 12:04:06 | 男 | 河南信阳 |
46 | 老王 | 2018/3/7 17:37:26 | 男 | 河南郑州 |
48 | 小马宝莉 | 2018/3/8 11:44:00 | 女 | 美国加利福尼亚 |
2. 首先新建User的实体类,是一个JavaBean。
package cn.titan6.beans; import java.io.Serializable; import java.util.Date; public class User implements Serializable { private Integer id; private String username; private Date birthday; private String sex; private String address; // Getter 和 Setter省略 }
3. 创建实现DAO操作的接口
package cn.titan6.dao; import cn.titan6.beans.User; import java.util.List; public interface UserDao { List<User> findAll(); }
4. Mybatis的主配置文件 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> <!-- 配置环境 --> <environments default="mysql"> <!--配置MySQL的环境--> <environment id="mysql"> <transactionManager type="JDBC"/> <!-- 配置数据源--> <dataSource type="POOLED"> <!-- 配置数据库连接信息 --> <property name="driver" value="com.mysql.cj.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:13306/mybatis_dayOne?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true"/> <property name="username" value="root"/> <property name="password" value="titan123"/> </dataSource> </environment> </environments> <mappers> <mapper resource="UserDao.xml"/> </mappers> </configuration>
5. 映射配置文件如下
<?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"> <mapper namespace="cn.titan6.impls.UserDao"> <!-- 配置查询所有 --> <select id="findAll" resultType="cn.titan6.beans.User"> SELECT * FROM user </select> </mapper>
6. 进行Mybatis DAO操作的测试类
public class mybatis_test { public static void main(String[] args) throws Exception { // 1.读取配置文件 // 2.创建SqlSessionFactory工厂对象 // 3.使用工厂产生一个SqlSession对象 // 4.使用SqlSession创建DAO接口的代理对象 // 5.使用代理对象执行方法 // 6.释放资源 InputStream inputStream = Resources.getResourceAsStream("SqlMapConfig.xml"); SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder(); SqlSessionFactory factory = builder.build(inputStream); SqlSession session = factory.openSession(); UserDaoImpl userDao = session.getMapper(UserDao.class); List<User> users = userDao.findAll(); for (User user : users) { System.out.println(user.getUsername() + "-----" + user.getAddress()); } session.close(); } }
7. 最终运行结果如下

文章评论