写本文章的目的:最近正在看狂神的视频学习mybatis,但是跟着视频配置下来仍然有一些小错误,导致花费了很多时间去找bug。在此记录一下,祝大家学习愉快。本文非常详细,适合小白食用。大佬跳过即可_
思路流程:搭建环境–>导入Mybatis—>编写代码—>测试
本程序的目的:利用mybatis查询数据库的信息。
本文章涉及的资源(点击直达):
狂神教学视频网址
视频对应文档网址
官方文档
开始配置
1、搭建环境
1.1、搭建实验数据库(在mysqlworkbench软件中创建一个表并添加数据,你用什么软件都可以,只要把表格建好并添加数据。)
--“CREATE DATABASE`mybatis`“只在第一次创建数据库的时候才使用, --之后如果在该数据库中建表就不用写这句话。 CREATE DATABASE `mybatis`; USE `mybatis`; DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `id` int(20) NOT NULL, `name` varchar(30) DEFAULT NULL, `pwd` varchar(30) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; insert into `user`(`id`,`name`,`pwd`) values (1,'狂神','123456'),(2,'张三','abcdef'),(3,'李四','987654');
MySqlWorkbench运行结果如下:
1.2、在IDEA中新建一个Maven项目–>删除src目录–>导入maven依赖
(1)
(2)
(3)在pom.xml文件(properties标签后)加入代码。
注意:导入的数据库依赖的时候,数据库的版本号一定要和你自己使用的数据库版本一致
<!--导入依赖--> <dependencies> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.2</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <!--一定要添加自己使用的数据库的对应版本号--> <version>8.0.20</version> </dependency> <!-- junit 依赖添加--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>RELEASE</version> <scope>maim</scope> </dependency> </dependencies> <!--当报错target文件夹下面看不到加载的配置文件需要添加依赖--> <build> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>false</filtering> </resource> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>false</filtering> </resource> </resources> </build>
2、导入MyBatis
2.1在IDEA里面连接前面写好的数据库。
注意:你的IDEA一定要是专业版的侧栏才有Database。社区版的建议去官网下一个专业版(学生认证即可免费使用)。
点击ok就可以了,建立成功如下:
2.2编写MyBatis核心配置文件。
(1)创建“mybatis-config.xml”配置文件。
(2)核心配置文件:连接数据库
注意:需要修改的地方—>配置文件中的mysql账号密码一定要写你自己的。
<?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.cj.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=utf8"/> <!--自己的mysql的账号密码--> <property name="username" value="root"/> <property name="password" value="12345678"/> </dataSource> </environment> </environments> <!--容易忘记:每写一个Mapper.xml都需要在mybatis核心配置文件里面注册!!!--> <mappers> <mapper resource="com/zzzl/dao/UserMapper.xml"/> </mappers> </configuration>
(3)编写MyBatis工具类
理解编写该工具类的目的(官方文档解释):每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为核心的。SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得。而 SqlSessionFactoryBuilder 则可以从 XML 配置文件来构建出 SqlSessionFactory 实例。–>有了 SqlSessionFactory,顾名思义,我们可以从中获得 SqlSession 的实例。(SqlSession 提供了在数据库执行 SQL 命令所需的所有方法。你可以通过 SqlSession 实例来直接执行已映射的 SQL 语句)。
main–>java–>创建utils包–>创建MybatisUtils工具类
public class MybatisUtils { private static SqlSessionFactory sqlSessionFactory; static { try { //读取配置文件,new获取sqlSessionFactory对象。 String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); } catch (IOException e) { e.printStackTrace(); } } //获取SqlSession连接 //既然有了 SqlSessionFactory,顾名思义,我们可以从中获得 SqlSession 的实例。 // SqlSession 提供了在数据库执行 SQL 命令所需的所有方法。你可以通过 SqlSession 实例来直接执行已映射的 SQL 语句。 public static SqlSession getSqlSession(){ return sqlSessionFactory.openSession(); } }
3、编写代码
文件夹如下:
(1)实体类User(为数据库中的变量封装–> 构造,有参,无参、set/get、toString() )
在这里插入代码片public class User { //变量名要和数据库中创建的一样 private int id; private String name; private String pwd; public User(){ } public User(int id, String name, String pwd) { this.id = id; this.name = name; this.pwd = pwd; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; } @Override public String toString() { return "User{" + "id=" + id + ", name='" + name + '\'' + ", pwd='" + pwd + '\'' + '}'; } }
(2)Dao文件夹下–> 编写UserMapper接口类
public interface UserMapper { List<User> selectUser(); }
(3)编写UserMapper.xml配置文件(文件夹中没有UserMapper接口类的实现类,这里的UserMapper.xml就充当了UserMapper实现类的作用。因为我们是用了mybatis框架,所以我们可以直接在配置文件中写SQL语句。)
注意:需要修改的地方—>配置文件中的namespace、resultType需要根据你自己的全限定类名(包名+类型)修改。
<?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:绑定一个对应的的接口 id:对应接口里面的方法名字。resultType:返回一个结果(结果是User类型的)。--> <mapper namespace="com.zzzl.dao.UserMapper"> <select id="selectUser" resultType="com.zzzl.pojo.User"> select * from user </select> </mapper>
特别注意:每写一个Mapper.xml都需要在mybatis核心配置文件mybatis-config.xml里面注册!(文章最前面展示的mybatis-config.xml配置文件中已经添加了的,这里不需要再添加一次,只是提醒⏰^_ ^)4、测试
创建测试文件
public class test { @Test public void test() { //获取SqlSession对象。 SqlSession session = MybatisUtils.getSqlSession(); //方法一:获取getMapper实现接口,并调用该对象的方法(这个方法在配置文件中配置了的,相当于该方法的实现) UserMapper mapper = session.getMapper(UserMapper.class); List<User> users = mapper.selectUser(); // System.out.println(users); 一个集合 for (User user: users){ System.out.println(user); } session.close(); } }
总结:是不是觉得配置mybatis太麻烦不如直接写JDBC语句?但是配置完一次后面就方便很多了。祝你学习愉快。