最近在学习使用ssm框架,整合过程比较麻烦,先把基础使用部分整理出来,这篇文章只是使用了mybatis连接数据库进行查询操作,主要来熟悉mybatis和数据库部分的操作。
IDEA:2020.2.1
mysql:8.0.21
本项目github连接
步骤如下:
1.新建maven工程
2.添加必要依赖
3. 连接数据库,编写实体类
4. 编写Mapper.xml(sql语句)
5.编写数据库配置文件
6.编写测试类
新建一个项目,选择好JDK版本,直接点击Next。(注意,此处不需要web环境,所以直接搭建就可以)
选择名称和位置,点击Finish
新建完的maven工程后的目录结构如下:
打开prom.xml,添加依赖(坐标)。把下面内容赋值到prom.xml文件中保存即可
<!--手动添加依赖--> <dependencies> <!--java单元测试框架--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> </dependency> <!--lombok可以使用注解的方式提供get和set方法 --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.10</version> </dependency> <!--mysql数据库驱动--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.39</version> </dependency> <!-- 日志打印--> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.16</version> </dependency> <!-- mybatis,一种数据库持久层框架--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.5</version> </dependency> </dependencies>
点击右侧的这个小图标,进行刷新操作,依赖就会添加了。
首先你要有个mysql数据库,如果没有的话,可以点击看如何下载安装配置。
执行下面这个sql脚本就会产生数据或者点击这里看如何生成测试数据。
DROP TABLE IF EXISTS `students`; CREATE TABLE `students` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `stu_name` varchar(20) NOT NULL , `stu_sex` varchar(10) NOT NULL , `class_id` int(10) NOT NULL , `age` int(10) NOT NULL DEFAULT 18, `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP, `update_time` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1000 DEFAULT CHARSET=utf8;
insert into students (stu_name,stu_sex,class_id,age) values ('张三','男',1001,18), ('王晓红','女',2001,20), ('李清乐','男',1001,23), ('赵倚天','男',3001,23);
然后用IDEA自带的数据库连接软件进行连接操作
填写必要信息,点击测试连接
如果点击测试连接的时候出现“服务器返回无效的时区。需要设置 ‘serverTimezone’ 属性”点击这里解决。
在main下新建一个我们的目录文件。
新建一个实体类,跟数据库的表名对应。注意,类名首字母一般大写。
package com.cat.pojo; import lombok.Data; @Data //加上Data就不用写get和set方法了 public class Students { private int id; private String stu_name; private String stu_sex; private int class_id; private int age; }
上面我们创建完了实体类,下面开始写xml配置,sql语句。我们新建包,然后在包下面新建一个studentsMapper.xml文件。注意这里建包规则和上面不同这里要写成com/cat/mapper。而上面的要写成com.cat.xxx 这种形式。
<?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="com.cat.mapper"> <!-- id 和返回类型,就是封装到什么地方--> <select id="listAllStudents" resultType="com.cat.pojo.Students"> select * from students; </select> </mapper>
这里的名字无所谓,知道每个文件的功能别写错了就行。不明白这个文件的可以点击这里看
特别要注意不要写错了。
<?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"></transactionManager> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://127.0.0.1:3306/myapp"/> <property name="username" value="root"/> <property name="password" value="root"/> </dataSource> </environment> </environments> <mappers> <mapper resource="com/cat/mapper/StudentsMapper.xml"/> </mappers> </configuration>
我们开始编写一个测试类,用来测试我们是否可以正常从数据库中取出数据。
有关Sqlsession等的知识可以点这里。
package com.cat.test; import com.cat.pojo.Students; 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 org.junit.Test; import java.io.IOException; import java.io.InputStream; import java.util.List; public class MyBatisTest { @Test public void test() throws IOException{ //获得核心配置文件 InputStream in = Resources.getResourceAsStream("MyBatisConfig.xml"); //获得session工厂对象 SqlSessionFactoryBuilder builder =new SqlSessionFactoryBuilder(); SqlSessionFactory factory=builder.build(in); SqlSession session =factory.openSession(); //获得会话对象 List<Students> students =session.selectList("com.cat.mapper.listAllStudents"); System.out.println(students); session.close(); //关闭 } }
写完了之后,我们点击旁边绿色的小箭头。
可以看出这里已经输出数据库的信息了。
这篇文章记录了使用mybatis连接数据库并从数据库中取出信息。核心配置文件一共就两个,一个是sql语句文件,一个是mybatis数据库配置文件。但是我们在测试的时候可发现,我们调用一个sql语句,就需要写大量的SqlSession,十分繁琐,所以后期我们用spring来进行整合操作。