MyBatis的中文官网地址:https://mybatis.org/mybatis-3/zh/index.html本文地址:http://www.04007.cn/article/888.html,未经许可,不得转载.
官方介绍:MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。从使用的经验来看,MyBatis让开发人员不用再去写重复的执行SQL获取数据集的操作,而只需要写好一个SQL语句和配置,然后交给mybatis执行即可拿到结果。我们依然从建立一个project开始,在里面建立一个module。project的配置如下:本文地址:http://www.04007.cn/article/888.html,未经许可,不得转载.
<!--工程依赖--> <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.21</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.10</version> </dependency> </dependencies> <!--指定Java版本--> <properties> <maven.compiler.source>11</maven.compiler.source> <maven.compiler.target>11</maven.compiler.target> </properties> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <!--指定Java版本--> <source>11</source> <target>11</target> </configuration> </plugin> </plugins> <!--maven静态资源过滤--> <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> </project>本文地址:http://www.04007.cn/article/888.html,未经许可,不得转载.
然后我们做好基础工作,包括建立一个张数据表area,字段内容如下:本文地址:http://www.04007.cn/article/888.html,未经许可,不得转载.
CREATE TABLE `area` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `city` varchar(20) DEFAULT NULL, `area` varchar(20) DEFAULT NULL, `stat` tinyint(3) unsigned DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=35 DEFAULT CHARSET=utf8本文地址:http://www.04007.cn/article/888.html,未经许可,不得转载.
我们往里面插入一些城市、市区名称内容。然后在包cn.kermit.pojo下创建表对应的pojo实体类文件Area,并在cn.kermit.dao包中创建AreaDao接口文件本文地址:http://www.04007.cn/article/888.html,未经许可,不得转载.
package cn.kermit.pojo; import lombok.Data; @Data //实体类 public class Area { private int id; private String city; private String area; private int stat; //AreaDao接口 package cn.kermit.dao; import cn.kermit.pojo.Area; import java.util.List; public interface AreaDao { List<Area> getAreaList(); } }本文地址:http://www.04007.cn/article/888.html,未经许可,不得转载.
接下来我们开始应用Mybatis到整个程序中来,首先我们要使用Mybatis。首先我们要创建mybatis的配置文件:src/main/resources/mybatis-config.xml,内容如下,配置文件中configuration是mybatis的核心 配置,我们可以定义多个environment以区别线上环境和测试环境,在environments中我们定义数据库(这里是mysql)的连接账号驱动这些基础连接配置,除了这个配置外我们需要关注的一个配置就是mappers配置,里面需要把我们写的Mapper.xml引入。本文地址:http://www.04007.cn/article/888.html,未经许可,不得转载.
<?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"> <!--mybatis核心配置文件--> <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://127.0.0.1:3306/qdshb?useSSL=true&useUnicode=true&characterEncoding=UTF-8"/> <property name="username" value="test"/> <property name="password" value="123456"/> </dataSource> </environment> </environments> <mappers> <mapper resource="cn/kermit/dao/AreaMapper.xml"/> </mappers> </configuration>本文地址:http://www.04007.cn/article/888.html,未经许可,不得转载.
AreaMapper.xml是什么?可以认为这个就是AreaDao接口的一个实现,如果你不用Mybatis,那它就是一个IMpl类,使用Mybatis之后我们就不用再去写其实现类了,只需要编写这么一个配置文件,你可以把它当作一个Mybatis需要依据此来生成实现类的一个配置吧。它是一个要执行的SQL操作方法配置集合,包括增删改查等。cn/kermit/dao/AreaMapper.xml配置内容示例如下:本文地址:http://www.04007.cn/article/888.html,未经许可,不得转载.
<?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绑定DAO接口--> <mapper namespace="cn.kermit.dao.AreaDao"> <!--select表示这是一个查询操作,id需要和AreaDao接口中的方法对应起来,resultType定义返回的结果集--> <select id="getAreaList" resultType="cn.kermit.pojo.Area"> select * from area </select> </mapper>本文地址:http://www.04007.cn/article/888.html,未经许可,不得转载.
上面写好各项好,我们再写一个连接mysql的基础工具类:放在包 cn.kermit.utils下面,如MybatisBase类,mybatis中三个重要的东西。我写个我个人的理解,我们需要和某个数据库建立连接,需要有一个建造连接的工厂,有了这个工厂之后我们才能得到各种连接,然后通过每个连接的方法来进行操作。对应的就是mybatis中三个重要的东西。一个是SqlSessionFactoryBuilder可以认为用来建造连接的工厂SqlSessionFactory,然后有了工厂SqlSessionFactory,我们就可以通过工厂SqlSessionFactory.openSession()方法来取得连接。如果我们要取得另外一个库的连接,应该可以在这里进行相应处理。如此我们就拿到了操作一个数据库的resource,可以进行各种操作了。本文地址:http://www.04007.cn/article/888.html,未经许可,不得转载.
package cn.kermit.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 MybatisBase { 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(); } } //取得sqlSession public static SqlSession getSqlSession(){ return sqlSessionFactory.openSession(); } }本文地址:http://www.04007.cn/article/888.html,未经许可,不得转载.
最后我们编辑测试类:使用java的junit测试。通过上面的工具类方法:MybatisBase.getSqlSession() 取得连接,然后查询数据库表中的所有数据然后打印。即成功展示数据。本文地址:http://www.04007.cn/article/888.html,未经许可,不得转载.
package cn.kermit.dao; import cn.kermit.pojo.Area; import cn.kermit.utils.MybatisBase; import org.apache.ibatis.session.SqlSession; import org.junit.Test; import java.util.List; public class AreaDaoTest { @Test public void test(){ //取得sqlSession SqlSession sqlSession = MybatisBase.getSqlSession(); //读取mapper AreaDao areaDao = sqlSession.getMapper(AreaDao.class); List<Area> areaList = areaDao.getAreaList(); for (Area area : areaList) { System.out.println(area); } } }本文地址:http://www.04007.cn/article/888.html,未经许可,不得转载.
本文地址:http://www.04007.cn/article/888.html 未经许可,不得转载. 手机访问本页请扫描右下方二维码.
![]() |
![]() |
手机扫码直接打开本页面 |