Title
关于本站
留言
地图
联系我
十年博客
首页
前端
Css
jQuery
Vue
React
Uni-app
后端
Java
PHP
Python
Wpf
.Net
硬件
树莓派
PCB制板
ROS机器人
机械臂
51单片机
3D打印机
设计
PS
C4D
素描
丙烯画
学科
英语
物理
电工学
数学
分享
软件
常用
游戏
Java笔记【二十三】-第一个Mybatis程序
2021-08-03
122
0
遇见狂神说Java学习笔记
专栏收录该内容
查看全部
31 篇文章
#### *环境: - JDK1.8 - Mysql5.7 - maven3.6.1 - IDEA #### *知识回顾: - JDBC - Mysql - Java基础 - Maven - Junit 框架:配置文件(看官网https://mybatis.org/mybatis-3/zh/index.html) ### 1.简介 **1.1from:官网**[传送门](https://baike.baidu.com/item/MyBatis/2824918?fr=aladdin) - MyBatis 是一款优秀的**持久层框架** - 它支持自定义 SQL、存储过程以及高级映射 - MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作 - MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。 **1.2from:百度**[传送门](https://baike.baidu.com/item/MyBatis/2824918?fr=aladdin) - MyBatis 本是apache的一个[开源项目](https://baike.baidu.com/item/开源项目/3406069)iBatis, 2010年这个[项目](https://baike.baidu.com/item/项目/477803)由apache software foundation 迁移到了[google code](https://baike.baidu.com/item/google code/2346604),并且改名为MyBatis - 2013年11月迁移到[Github](https://baike.baidu.com/item/Github/10145341)。 **1.3获取Mybatis** Maven仓库 ``` xml <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.6</version> </dependency> ``` Github:https://github.com/mybatis/mybatis-3/releases 中文文档:https://mybatis.org/mybatis-3/zh/index.html ### 2.持久层 **2.1数据持久化** - 持久化就是将程序的数据在持久状态和瞬时状态转化的过程 - 内存:断电丢失 - 数据库(jdbc),io文件持久化 **2.2为什么需要持久化** 有一些对象不能丢 **2.3持久层** - 完成持久化工作代码 - 层界限明显 ### 3.为什么需要Mybatis - 方便 - 将数据存入到数据库的过程简化 - 传统的JDBC代码太复杂,简化,框架,自动化 - 不用mybatis也可,但更容易上手 - 简单易学,灵活 - sql和代码的分离,提高了可维护性。 - 提供映射标签,支持对象与数据库的orm字段关系映射 - 提供对象关系映射标签,支持对象关系组建维护 - 提供xml标签,支持编写动态sql **用的人多,工作需要** ### 4.搭建环境 思路:搭建环境-> 导入Mybatis -> 编写代码 -> 测试 1. 准备数据库 2. 新建项目 1. 新建maven普通项目 2. 删除src目录 3. 导入maven依赖 ```xml <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.6</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.49</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> ``` ### 5.创建模块 **5.1编写Mybatis核心配置文件:mybatis-config.xml** ```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="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/test?useSSL=true&amp;useUnicode=true&amp;characterEncoding=UTF-8"/> <property name="username" value="root"/> <property name="password" value="root"/> </dataSource> </environment> <environment id="test"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/test?useSSL=true&amp;useUnicode=true&amp;characterEncoding=UTF-8"/> <property name="username" value="root"/> <property name="password" value="root"/> </dataSource> </environment> </environments> <mappers> <mapper resource="org/mybatis/example/BlogMapper.xml"/> </mappers> </configuration> ``` **5.2编写Mybatis工具类** ```java package com.lovedcode.utils; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import java.io.IOException; import java.io.InputStream; public class MybatisUtils { private static SqlSessionFactory sqlSessionFactory; static { try { // 使用Mybatis获取SqlSessionFactory对象 String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); } catch (IOException e) { e.printStackTrace(); } } // 既然有了 SqlSessionFactory,顾名思义,我们可以从中获得 SqlSession 的实例 public static SqlSession getSqlSession(){ return sqlSessionFactory.openSession(); } } ``` **5.3编写代码** 实体类 ```java package com.lovedcode.entity; import java.io.Serializable; public class User implements Serializable { private int id; private String username; private String password; public User() { } public User(int id, String username, String password) { this.id = id; this.username = username; this.password = password; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } } ``` Dao接口 ```java public interface UserDao { List<User> getUserList(); } ``` 接口实现类有原来的UserDaoImpl转变成为一个Mapper配置文件:UserMapper.xml ``` <?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"> <!-- namespace:属性是名称空间,必须唯一 --> <mapper namespace="com.lovedcode.dao.user.UserDao"> <select id="getUserList" resultType="com.lovedcode.entity.User"> select id,username,password from user; </select> </mapper> ``` **MapperRegistry**是? 注意:org.apache.ibatis.binding.BindingException: Type interface com.lovedcode.dao.user.UserDao is not known to the MapperRegistry. 核心配置文件中注册mappers **5.4测试:junit** ```java public class UserDaoTest { @Test public void testGetUserList(){ // 第一步:获得SqlSession SqlSession sqlSession = MybatisUtils.getSqlSession(); //================方式一:getMapper(推荐) UserMapper mapper = sqlSession.getMapper(UserMapper.class); List<User> userList = mapper.getUserList(); //================方式二:getMapper // List<User> userList = sqlSession.selectList("com.lovedcode.dao.user.UserDao.getUserList"); for (User user : userList) { System.out.println(user.getUsername()); } // 关闭 sqlSession.close(); } } ``` 测试中可能遇到的问题: 1. 配置文件没有注册 2. 绑定接口错误 3. 方法名不对 4. 返回类型不对 5. Maven导出资源问题[传送门](https://www.lovedcode.com/blogs/article/article/id/165.html) pom.xml资源导出配置 ->mybatis配置文件-> 工具类 -> 实体类 -> dao接口 -> xxMapper.xml -> 测试类
网站会不定期更新计算机技术方面知识,感兴趣的可以收藏,如需转载请附上原文出处链接和本声明。
本文连接:
目录
遇见狂神说Java学习笔记
查看更多>>
Java笔记【二十二】-邮件发送
199
Java笔记【三十九】-静态代理 & 动态代理
123
Java笔记【三十三】-IOC思想
91
Java笔记【二十六】-Mybatis-resultMap
103
Java笔记【四十】-Spring-Aop
107
Java笔记【三十六】-Spring依赖注入
87
Java笔记【二十四】-Mybatis的CRUD操作
101
Java笔记【三十五】-Spring配置
119
Java笔记【二十五】-Mybatis配置与作用域
125
Java笔记【二十三】-第一个Mybatis程序
123
Title