更新时间:2024-09-13 GMT+08:00
使用MyBatis连接数据库
MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射,其避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。
本章节指导用户使用MyBatis连接GaussDB示例的配置依赖和配置文件。
配置pom依赖
<dependency> <groupId>com.huaweicloud.gaussdb</groupId> <artifactId>opengaussjdbc</artifactId> <version>503.2.T35</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.6</version> </dependency>
配置pom依赖时,需要提前配置好maven环境。
配置文件
配置mybatis-config.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> <!--配置全局属性--> <settings> <!--使用jdbc的getGeneratedKeys获取数据库自增主键值--> <setting name="useGeneratedKeys" value="true"/> <!--使用列标签替换列别名 默认为true--> <setting name="useColumnLabel" value="true" /> <!--开启驼峰式命名转换:Table{create_time} -> Entity{createTime}--> <setting name="mapUnderscoreToCamelCase" value="true" /> <setting name="logImpl" value="STDOUT_LOGGING" /> </settings> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="com.huawei.opengauss.jdbc.Driver"/> <property name="url" value="jdbc:opengauss://***.***.***.***(需要替换为数据库ip):20000(需要替换为数据库端口)/test?(test需要替换为对应的database)connectionTimeout=10"/> <property name="username" value="***(需要替换为正确的用户名)"/> <property name="password" value="*******(需要替换为正确的密码)"/> </dataSource> </environment> </environments> <!--注册 mapper(mapper.xml 所在地址)--> <mappers> <mapper resource="mapper/StudentDaoMapper.xml"></mapper> </mappers> </configuration>
示例
- 测试实体类StudentEntity.java(com.huawei.entity路径下):
public class StudentEntity { Integer id; String name; }
- 实体类对应的StudentDaoMapper.xml文件(resources.mapper路径下):
<?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="StudentMapper"> <!-- 根据主键查询--> <select id="getList" resultType="com.huawei.entity.StudentEntity" > select * from student; </select> </mapper>
- 查询表测试方法:
@Test public void mainTest() throws IOException { // 1.读取mybatis的核心配置文件(mybatis-config.xml) InputStream in = Resources.getResourceAsStream("mybatis-config.xml"); // 2.通过配置信息获取一个SqlSessionFactory工厂对象 SqlSessionFactory fac = new SqlSessionFactoryBuilder().build(in); // 3.通过工厂获取一个SqlSession对象 SqlSession session = fac.openSession(); // 4.通过namespace+id找到要执行的SQL语句并执行SQL语句 List<StudentEntity> list = session.selectList("StudentMapper.getList"); // 5.输出结果 list.forEach(i -> { System.out.println(i.toString()); }); }
- 查询结果日志:
图1 查询结果日志
目前MybatisPlus插件中PaginationInnerInterceptor未对GaussDB驱动做适配。创建PaginationInnerInterceptor对象时指定DbType为POSTGRE_SQL即可解决。eg: PaginationInnerInterceptor innerInterceptor = new PaginationInnerInterceptor(DbType.POSTGRE_SQL)。