社交网站后端项目开发日记(一) (4)

image-20210714010900698

3. MyBatis

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

image-20210714013153967

mybatis文档

mybatis-spring文档

在maven项目pom.xml中添加依赖

<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.25</version> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.2.0</version> </dependency>

在SpringBoot框架下,只需要对application.properties进行配置,增加如下:

# DataSourceProperties spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/community?characterEncoding=utf-8&useSSL=false&serverTimezone=Hongkong spring.datasource.username=root spring.datasource.password=Ss6215615 #设置连接池,这个比较好 spring.datasource.type=com.zaxxer.hikari.HikariDataSource spring.datasource.hikari.maximum-pool-size=15 spring.datasource.hikari.minimum-idle=5 spring.datasource.hikari.idle-timeout=30000 # MybatisProperties mybatis.mapper-locations=classpath:mapper/*.xml mybatis.type-aliases-package=com.nowcoder.community.entity mybatis.configuration.useGeneratedKeys=true #自动匹配 a_b == aB mybatis.configuration.mapUnderscoreToCamelCase=true # logger,设置日志,方便在控制台查看信息 logging.level.com.nowcoder.community=debug

mybatis.type-aliases-package=com.nowcoder.community.entity

这行代码声明了SQL中记录在Java中的对象位置,根据SQL中的属性建立对象。

public class User { private int id; private String username; private String password; private String salt; private String email; private int type; private int status; private String activationCode; private String headerUrl; private Date createTime; //等等,还有set,get,toString

建立对象之后,在项目中的dao文件,建立UserMapper(对于User的操作)接口,Mybatis只需要通过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.nowcoder.community.dao.UserMapper"> <!-- 这里写UserMapper的全限定名 --> <sql> id, username, password, salt, email, type, status, activation_code, header_url, create_time </sql> <sql> username, password, salt, email, type, status, activation_code, header_url, create_time </sql> <select resultType="User"> <!-- 配置里进行过设置package,否则需要写全限定名 --> select <include refid="selectFields"></include> from user where id = #{id} <!-- 这里的意思是要引用方法的参数 --> </select> <select resultType="User"> <!-- 配置里进行过设置package,否则需要写全限定名 --> select <include refid="selectFields"></include> from user where username = #{username} <!-- 这里的意思是要引用方法的参数 --> </select> <select resultType="User"> <!-- 配置里进行过设置package,否则需要写全限定名 --> select id, username, password, salt, email, type, status, activation_code, header_url, create_time from user where email = #{email} <!-- 这里的意思是要引用方法的参数 --> </select> <insert parameterType="User" keyProperty="id"> insert into user (<include refid="insertFields"></include>) values(#{username}, #{password}, #{salt}, #{email}, #{type}, #{status}, #{activationCode}, #{headerUrl}, #{createTime}) </insert> <update> update user set status = #{status} where id = #{id} </update> <update> update user set header_url = #{headerUrl} where id = #{id} </update> <update> update user set password = #{password} where id = #{id} </update> </mapper>

这里建立了增删改的操作。

mybatis.mapper-locations=classpath:mapper/*.xml

根据已有的配置在resource文件夹中建立mapper目录和.xml文件。

由于.xml文件不会自动检测编译,建议在test中依次测试相应功能,以免出现错误。

4. 总结

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzsfds.html