推荐学Java——第一个MyBatis程序
Posted code小生
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了推荐学Java——第一个MyBatis程序相关的知识,希望对你有一定的参考价值。
知识点索引
什么是 MyBatis
一款优秀的持久层框架。MyBatis 使用 XML 将 SQL 与程序解耦,便于维护。MyBatis 学习成本低,执行高效,底层是对 JDBC 的封装和扩展。
- MyBtis官网:
https://mybatis.org/mybatis-3/zh/index.html
- github地址:
https://github.com/mybatis/mybatis-3/releases
tips:本文所涉及的源码和数据表,在公众号
推荐学java
回复myBatisDemo
即可获得。
创建一个 MyBatis 项目的整体流程
- 创建数据库
- 创建数据表(本文的表结构和数据都不复杂)
- 创建基于 Maven 的 java 项目(上一节内容手把手实践过的)
- 项目基本配置完成,保证项目与数据库可以连接成功
- 通过项目中 Java 代码操作数据库中数据表的数据
- 业务功能完成,项目上线(发布项目)
以上 6 点,其中前 3 点之前的内容都有实战,这里不再做详细介绍,4 和 5 是本节的核心内容,最后一点不在本节内容实战,等学完 SSM 综合框架后,会专门做讲解,那个时候也更适合一些。
保证项目与数据库链接成功
1、创建数据表 tv_series
一条记录是一部电视剧的简单记录,包括这些信息:
tv_id
:主键自增,不可为空。
tv_title
:电视剧名称,也就是标题,不可为空。
tv_sub_title
:电视剧描述,也可以是子标题宣传短文本。
tv_type
:电视剧的类型,这里列举了 悬疑
、武侠
、江湖
、爱情
、宫廷
、乡村
6 类。
2、创建基于 Maven 的 Java 项目
创建步骤这里不做解释,需要提示一点,当创建项目点击了最后的 Nnext
按钮后,在新的 IDE 窗口中右下角会出现如下图提示,记得点击这里箭头标注的地方:
如果你能看到红框标注的信息,这就说明项目是构建成功的。可以接下来的工作啦!
3、完成项目基本配置
下图是在创建完成后的项目结构基础上,增加了必须的配置,大家可以跟自己创建的新项目对比一下,箭头标注的都是需要手动创建的:
这里做具体的解释,操作步骤基本都是“套路”,哈哈
-
红色剪头1,需要做的工作
创建目录,关于这个目录的名字还有讲究,一般大家都习惯叫
domain
、bean
、entity
,选择一个即可。该目录下的所有calss
都和数据库中的表字段相对应,数据数据表中字段是用下划线分割的,那么这个类里面的变量就用驼峰来命名,小编这里的示例代码如下:package com.javafirst.bean; /** * desc: 数据表对应的 java 实体类 * author weChat: studyingJava */ public class TVSeriesBean private int tvId; private String tvTitle; private String tvSubTitle; private int tvType; public int getTvId() return tvId; public void setTvId(int tvId) this.tvId = tvId; public String getTvTitle() return tvTitle; public void setTvTitle(String tvTitle) this.tvTitle = tvTitle; public String getTvSubTitle() return tvSubTitle; public void setTvSubTitle(String tvSubTitle) this.tvSubTitle = tvSubTitle; public int getTvType() return tvType; public void setTvType(int tvType) this.tvType = tvType; @Override public String toString() return "TVSeriesBean打印信息:\\n" + "tvId=" + tvId + ", tvTitle='" + tvTitle + '\\'' + ", tvSubTitle='" + tvSubTitle + '\\'' + ", tvType=" + tvType + '';
这里手动生成了
setXXX()
、getXXX()
方法,其实还有一些插件可以自动搞定,这里先不做用法,不适合新手。 -
红色剪头2,需要做的工作
手动创建文件夹,关于命名一般叫做
dao
,你也可以定义为你喜欢的哈。该包下的所有文件都是interface
类型,专门用于提供接口,接口对应操作的是sql
语句,而sql
语句影响的是数据库中的数据,这就把项目和数据库建立了联系,但到这一步,还远远不能访问通。该类的示例代码如下,其他可根据业务进行扩展:
package com.javafirst.dao; import com.javafirst.bean.TVSeriesBean; import java.util.List; /** * desc: 与数据库操作的相关业务接口 * <p> * author weChat: studyingJava */ public interface TVSeriesDao /** * 根据 id 查询某部电视剧 * * @param tvId * @return */ TVSeriesBean selectTVSeriesById(Integer tvId); /** * 查询所有电视剧 * * @return */ List<TVSeriesBean> selectTVSeriesAll(); /** * 添加一条记录(电视剧)通过字段方式 * * @param title * @param subTitle * @param type */ void addTVSeriesOne(String title, String subTitle, int type); /** * 添加一条记录(电视剧)通过对象方式 * * @param tvSeriesBean */ void addTVSeriesObject(TVSeriesBean tvSeriesBean);
-
红色剪头3,需要做的工作
在
main
目录下新建与java
平级的文件夹resources
,新建的时候 IDEA 会自动识别,不需要我们手动收入该名称,直接选中回车即可创建成功。 -
红色剪头4,需要做的工作
在第 3 步的基础上,接着在
resources
目录下创建mapper
文件夹,然后创建XXXMapper.xml
,这个文件和前面创建的xxxDao
文件是对应的,所以尽量起名保持一致,项目复杂的时候能一眼识别,便于维护和理解。小编这里创建的是TVSeriesMapper.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"> <mapper namespace="com.javafirst.dao.TVSeriesDao"> </mapper>
这里其他的都是固定写法,唯一需要改变的是
mapper
标签里的namespace
的值,很熟悉吧,这个值就是我们前面已经创建过的XXXdao
的全路径。mapper
标签里面的节点,就是我们日常操作表的 xml 语法,包括<select>
、<insert>
、<update>
、<delete>
这些标签,而这些标签里面的内容就是我们在《推荐学java——数据表操作》章节学习过的sql
语句。具体本文后面会给出示例代码。 -
红色剪头5,需要做的工作
在第三步的基础上,接着在
resources
目录下创建mybatis-config.xml
,此文件的命名不是固定的,但一般都写这个名字,因为它的作用就是通过配置保证myBatis
框架能与数据库链接起来,并可以操作数据,所以这里面会有很多固定形式的配置项。本文的示例代码如下:<?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"> <!-- mysql驱动--> <property name="driver" value="com.mysql.jdbc.Driver"/> <!-- 指定数据库开放的端口、要连接的数据库名、编码方式--> <property name="url" value="jdbc:mysql://localhost:3306/mybatis_demo?useUnicode=true&characterEncoding=utf8"/> <!-- mysql用户名--> <property name="username" value="root"/> <!-- mysql登录密码--> <property name="password" value="root"/> </dataSource> </environment> </environments> <mappers> <!-- 这里配置每个mapper文件 --> <mapper resource="mapper/TVSeriesMapper.xml"/> </mappers> </configuration>
同样这里的代码基本都是模板,只需要修改几个关键地方就可以了。
<!-- 指定数据库开放的端口、要连接的数据库名、编码方式--> <property name="url" value="jdbc:mysql://localhost:3306/mybatis_demo?useUnicode=true&characterEncoding=utf8"/> <!-- mysql用户名--> <property name="username" value="root"/> <!-- mysql登录密码--> <property name="password" value="root"/>
- 这里小编是在本地跑项目,所以
url
的值localhost:3306
是本地的,如果你在安装mySQL
的时候修改了端口号,那么这里要使用你修改过的; mybatis_demo
是我们前面创建的数据库的名字,也就是本节内容整体流程里的第一步;username
值对应的是你登录mysql的账户名,这在我们《推荐学java——初识数据库》一节里讲解过了;password
值对应的是你登录mysql的密码;
- 这里小编是在本地跑项目,所以
-
红色剪头6,需要做的工作
pom.xml
文件在项目创建成功后会自动生成,我们需要做的就是在里面配置依赖项,这就要用到我们上一节学习到的内容了《推荐学java——Maven初识》 ,小编这里做了mySql驱动
和mybatis依赖
配置后的完整代码如下:<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.javafirst</groupId> <artifactId>TV_series</artifactId> <version>1.0</version> <!-- 暂时注释掉 --> <!-- <name>TV_series</name>--> <!-- <!– FIXME change it to the project's website –>--> <!-- <url>http://www.example.com</url>--> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> <dependencies> <!-- 单元测试(默认添加) --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> <!-- mySql驱动--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.25</version> </dependency> <!-- mybatis依赖--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.7</version> </dependency> </dependencies> <build> <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) --> <plugins> <!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle --> <plugin> <artifactId>maven-clean-plugin</artifactId> <version>3.1.0</version> </plugin> <!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging --> <plugin> <artifactId>maven-resources-plugin</artifactId> <version>3.0.2</version> </plugin> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.0</version> </plugin> <plugin> <artifactId>maven-surefire-plugin</artifactId> <version>2.22.1</version> </plugin> <plugin> <artifactId>maven-jar-plugin</artifactId> <version>3.0.2</version> </plugin> <plugin> <artifactId>maven-install-plugin</artifactId> <version>2.5.2</version> </plugin> <plugin> <artifactId>maven-deploy-plugin</artifactId> <version>2.8.2</version> </plugin> <!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle --> <plugin> <artifactId>maven-site-plugin</artifactId> <version>3.7.1</version> </plugin> <plugin> <artifactId>maven-project-info-reports-plugin</artifactId> <version>3.0.0</version> </plugin> </plugins> </pluginManagement> </build> </project>
比如后期要用到什么三方的框架之类的,都可以在上节内容提到的
maven仓库
搜索配置,然后添加到这里,这就是 maven 的方便之处。 -
红色剪头7,需要做的工作
到这一步基本的配置工作已经完成了,剩下的就是业务代码和逻辑了,前面这 6 步操作基本上每次我们创建项目都会做这些工作,大家需要熟练掌握流程。
这里有个小技巧:
XXXmapper.xml
和mybatis-config.xml
其实可以利用IDEA
的模板功能,方便快捷。这里我们新建通用的包
utils
,暂时我们只会新建MyBatisUtil.java
,示例代码如下:package com.javafirst.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; /** * desc:MyBatis工具类 * <p> * author weChat: studyingJava */ public class MyBatisUtil private static SqlSessionFactory sqlSessionFactory = null; static String configXml = "mybatis-config.xml"; try InputStream inputStream = Resources.getResourceAsStream(configXml); sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); catch (IOException e) e.printStackTrace(); public static SqlSession openSqlSession() SqlSession sqlSession = null; if (null != sqlSessionFactory) sqlSession = sqlSessionFactory.openSession(); else String configXml = "mybatis-config.xml"; try InputStream inputStream = Resources.getResourceAsStream(configXml); sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); sqlSession = sqlSessionFactory.openSession(); catch (IOException e) e.printStackTrace(); return sqlSession;
之所以会有这个工具类,是因为我们要避免重复的代码,关于为什么这样写,大家可以在
MyBatis
官网查看。
下面就开始写功能代码,测试链接数据,激动人心的时刻要到来了!
4、测试链接成功
本文的核心是 MyBatis
,现在我们就测试下 MyBatis
与数据库链接是否成功,代码如下:
@Test
public void testSqlConnection()
SqlSession sqlSession = MyBatisUtil.openSqlSession();
System.out.println("测试 MyBatis 链接数据库驱动:" + sqlSession.toString());
这段代码大家自行新建一个java类,然后写上这段代码,进行单元测试,结果如下图,则为链接成功,说明前面的 mybatis-config.xml
里的配置没有出错。
操作数据表
接下来就可以操作数据库中的表了,在本文的最开始我们新建了一张表,里面没有任何数据,现在我们先来做一次查询,然后再做一次插入数据,再做一次全部查询,证明我们通过java项目可以操作数据库。
-
查询所有记录
单元测试 java 方法如下:
/** * 查询所有记录 */ @Test public void testSelectTVSeriesAll() SqlSession sqlSession = MyBatisUtil.openSqlSession(); TVSeriesDao tvSeriesDao = sqlSession.getMapper(TVSeriesDao.class); List<TVSeriesBean> tvSeriesBeans = tvSeriesDao.selectTVSeriesAll(); sqlSession.close(); System.out.println("查询所有记录(电视剧):" + tvSeriesBeans.size()); for (TVSeriesBean tvSeries : tvSeriesBeans) System.out.println(tvSeries);
对应的
mapper.xml
中的select
语句如下:<mapper namespace="com.javafirst.dao.TVSeriesDao"> <!-- 查询所有记录 --> <select id="selectTVSeriesAll" resultType="com.javafirst.bean.TVSeriesBean">
以上是关于推荐学Java——第一个MyBatis程序的主要内容,如果未能解决你的问题,请参考以下文章