MyBatis框架搭建
一、创建项目
二、编写pom.xml文件
引入jar包,添加编译配置。
<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.bdqn</groupId> <artifactId>MyBatis-20240618</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <name>MyBatis-20240618</name> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <!-- 引入MySQL驱动包 --> <dependency> <groupId>com.mysql</groupId> <artifactId>mysql-connector-j</artifactId> <version>8.2.0</version> </dependency> <!-- 引入MyBait(数据库操作框架) --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.16</version> </dependency> <!-- 引入Log4j --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13.2</version> <scope>test</scope> </dependency> </dependencies> <build> <!-- 打包文件名称 --> <finalName>MyBatis-20240618</finalName> <!-- 资源文件配置 --> <resources> <resource> <!-- 资源文件目录 --> <directory>src/main/resources</directory> <!-- 编译引入的文件 --> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> </resource> </resources> </build> </project>
三、编写配置文件
在src/main/resources
目录中编写如下配置文件。
日志配置文件 log4j.properties
log4j.rootLogger=DEBUG, console,logfile log4j.appender.console=org.apache.log4j.ConsoleAppender log4j.appender.console.Target=System.out log4j.appender.console.layout=org.apache.log4j.PatternLayout log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%5p] %m%n log4j.appender.logfile=org.apache.log4j.FileAppender log4j.appender.logfile.File=jbit.log log4j.appender.logfile.layout=org.apache.log4j.PatternLayout log4j.appender.logfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%5p] %m%n log4j.logger.com.bdqn.mapper=debug log4j.logger.com.ibatis=debug log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=debug log4j.logger.com.ibatis.common.jdbc.ScriptRunner=debug log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=debug log4j.logger.java.sql.Connection=debug log4j.logger.java.sql.Statement=debug log4j.logger.java.sql.PreparedStatement=debug log4j.logger.java.sql.ResultSet=debug
数据源配置文件 database.properties
driver=com.mysql.cj.jdbc.Driver url=jdbc:mysql:///cvs_db?serverTimezone=GMT-8 username=root password=lilibo
MyBatis核心配置文件 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> <!-- 引入database.properties配置 --> <properties resource="database.properties" /> <settings> <setting name="logImpl" value="LOG4J" /> </settings> <environments default="development"> <environment id="development"> <transactionManager type="JDBC" /> <dataSource type="POOLED"> <property name="driver" value="${driver}" /> <property name="url" value="${url}" /> <property name="username" value="${username}" /> <property name="password" value="${password}" /> </dataSource> </environment> </environments> <!-- 配置映射文件 --> <mappers> <mapper resource="mapper/SysUserMapper.xml" /> </mappers> </configuration>
四、编写代码
在 src/main/java/
目录中建立对应的包结构编写代码。
① 实体类 com.bdqn.entity
新建 SysUser.java
package com.bdqn.entity; import java.io.Serializable; import java.util.Date; /** * 系统用户 * * @TableName t_sys_user */ public class SysUser implements Serializable { private static final long serialVersionUID = 1L; /** * 主键ID */ private Long id; /** * 账号 */ private String account; /** * 真实姓名 */ private String realName; /** * 密码 */ private String password; /** * 性别(1:女、 2:男) */ private Integer sex; /** * 出生日期(年-月-日) */ private Date birthday; /** * 手机号码 */ private String phone; /** * 用户地址 */ private String address; /** * 用户角色id */ private Long roleId; /** * 身份证照片 */ private String idPicPath; /** * 工作证照片 */ private String workPicPath; /** * 创建人 */ private Long createdUserId; /** * 创建时间 */ private Date createdTime; /** * 修改人 */ private Long updatedUserId; /** * 修改时间 */ private Date updatedTime; /** * 用户角色名称 */ private String roleName; /** * 关联角色表的角色名称 */ private String roleIdName; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getAccount() { return account; } public void setAccount(String account) { this.account = account; } public String getRealName() { return realName; } public void setRealName(String realName) { this.realName = realName; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public Integer getSex() { return sex; } public void setSex(Integer sex) { this.sex = sex; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public Long getRoleId() { return roleId; } public void setRoleId(Long roleId) { this.roleId = roleId; } public String getIdPicPath() { return idPicPath; } public void setIdPicPath(String idPicPath) { this.idPicPath = idPicPath; } public String getWorkPicPath() { return workPicPath; } public void setWorkPicPath(String workPicPath) { this.workPicPath = workPicPath; } public Long getCreatedUserId() { return createdUserId; } public void setCreatedUserId(Long createdUserId) { this.createdUserId = createdUserId; } public Date getCreatedTime() { return createdTime; } public void setCreatedTime(Date createdTime) { this.createdTime = createdTime; } public Long getUpdatedUserId() { return updatedUserId; } public void setUpdatedUserId(Long updatedUserId) { this.updatedUserId = updatedUserId; } public Date getUpdatedTime() { return updatedTime; } public void setUpdatedTime(Date updatedTime) { this.updatedTime = updatedTime; } public String getRoleName() { return roleName; } public void setRoleName(String roleName) { this.roleName = roleName; } public String getRoleIdName() { return roleIdName; } public void setRoleIdName(String roleIdName) { this.roleIdName = roleIdName; } }
② Mapper接口 com.bdqn.mapper
新建 SysUserMapper.java 接口
package com.bdqn.mapper; import com.bdqn.entity.SysUser; import java.util.List; /** * SysUserMapper * * @author LILIBO * @since 2024/6/18 */ public interface SysUserMapper { /** * 查询总数量 * * @return */ int count(); /** * 添加用户 * * @param sysUser * @return */ int add(SysUser sysUser); /** * 修改用户 * * @param sysUser * @return */ int upd(SysUser sysUser); /** * 删除用户 * * @param id * @return */ int del(Long id); /** * 查询用户列表 * * @return */ List<SysUser> list(); }
③ 编写Mapper映射文件 src/main/resources/mapper
新建 SysUserMapper.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.bdqn.mapper.SysUserMapper"> <!-- 查询总数量 --> <select id="count" resultType="int"> select count(*) from t_sys_user; </select> <!-- 添加用户 --> <insert id="add"></insert> <!-- 修改用户 --> <update id="upd"></update> <!-- 删除用户 --> <delete id="del"></delete> <!-- 查询用户列表 --> <select id="list" resultType="com.bdqn.entity.SysUser"></select> </mapper>
五、测试运行
在测试目录 src/test/java/com/bdqn
新建 SysUserMapperTest.java
package com.bdqn; import com.bdqn.mapper.SysUserMapper; 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.After; import org.junit.Before; import org.junit.Test; import java.io.InputStream; /** * SysUserMapperTest * * @author LILIBO * @since 2024-06-11 */ public class SysUserMapperTest { /** * SQL会话对象 */ private SqlSession sqlSession; /** * 在每一个测试用例执行之前做的事情 * * @throws Exception */ @Before public void setUp() throws Exception { String resource = "mybatis-config.xml"; InputStream is = Resources.getResourceAsStream(resource); SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is); sqlSession = factory.openSession(true); // 设置true表示自动提交 } /** * 在每一个测试用例执行之后做的事情 * * @throws Exception */ @After public void tearDown() { if (sqlSession != null) { sqlSession.close(); } } /** * 测试查询总数据量(MyBatis框架基本使用) */ @Test public void testCount() { int count = sqlSession.getMapper(SysUserMapper.class).count(); System.out.println("总数据量:" + count); assert true; // 不报错则断言测试成功 } }
运行测试方法 testCount()