搭建MyBatis工程
快速搭建MyBatis工程
第一步:创建一个maven的工程
这里使用maven来创建MyBatis工程
第二步:导入相关依赖
需要导入MyBatis工程中对应的依赖,以及后期所需要的依赖
<dependencies>
<!--mybatis的依赖-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.9</version>
</dependency>
<!--mysql的依赖-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.30</version>
</dependency>
<!--lombok依赖[1]idea安装lombok插件 [2]引入依赖-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version>
</dependency>
<!--junit单元测试-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!--日志log4j依赖-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.12</version>
</dependency>
</dependencies>
注意一点:每次导入依赖时,都需要刷新一下maven。
第三步:设置实体类
根据数据库的列名与表名设计实体类
数据库的相关信息:(表名Role)
实体类:
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Role {
private Integer id;
private String role_name;
private String role_code;
private String description;
}
注意:
①这里的数据库列名要与实体类的属性名一致。
②这里基本数据类型要改成其对应的包装类型。
第四步: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">
<!--数据库驱动器-->
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<!--数据库的连接路径-->
<property name="url" value="jdbc:mysql://localhost:3306/day124?serverTimezone=Asia/Shanghai"/>
<!--用户账号-->
<property name="username" value="root"/>
<!--用户密码-->
<property name="password" value="1qaz2wsx"/>
</dataSource>
</environment>
</environments>
<!--引入对应的映射文件注意:改为自己的映射文件-->
<mappers>
<!--第一种是根据资源文件进行映射,一般用于通过xml文件进行映射-->
<mapper resource="mapper/RoleMapper.xml"/>
<!--第二种是根据类名进行映射,注意:类名需要全称,一般用于通过注解形式映射-->
<mapper class="com.hrc.dao.MyRoleDao"/>
</mappers>
</configuration>
第五步:配置日志文件
由于maven中导入log4j依赖,这里将介绍如何使用日志输出。
①首先在resources文件下创建一个名称为log4j.properties文件
②文件中添加日志信息
log4j.rootLogger=DEBUG, Console
#Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
log4j.logger.java.sql.ResultSet=INFO
log4j.logger.org.apache=INFO
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUGdriver
第六步:设置映射接口和映射文件
映射接口:
//习惯将自己写方法,然后通过接口来调用方法
public interface RoleDao {
//比如写查询所有的方法
public List<Role> queryAll();
}
映射文件:
一般写在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">
<!--下面是映射关系的书写-->
<!--namespace:这里是映射接口对应的地址全称-->
<mapper namespace="com.hrc.dao.RoleDao">
<!--id:是RoleDao的一个方法名-->
<!--
<insert>:这个标签主要用来添加操作
-->
<insert id="insert">
insert into t_role values (null,#{roleName},#{roleCode},#{description})
</insert>
<!--
<update>:这个标签主要用来修改操作
-->
<update id="update">
update t_role set role_name=#{roleName},role_code=#{roleCode},description=#{description} where id=#{id}
</update>
<!--
<delete>:这个标签主要用来删除操作
-->
<delete id="delete">
delete from t_role where id = #{id}
</delete>
<!--
<select>:这个标签主要用来查询
-->
<select id="selectOne" resultType="com.hrc.entity.Role">
select * from t_role where id=#{id}
</select>
</mapper>
注意一点:写好映射文件后需要在MyBatis配置文件中写好对应的映射关系。
比如:
第七步:测试
public class RoleTest {
@Test
public void queryTest() throws Exception{
//读取 MyBatis配置文件资源
//import org.apache.ibatis.io.Resources; 注意这里导入的包必须是ibatis下的
Reader resourceAsReader = Resources.getResourceAsReader("mybatis.xml");
//创建SqlSessionFactory工厂(根据读取mybatis配置文件进行创建)
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsReader);
//开启SqlSession会话对象
SqlSession sqlSession = sqlSessionFactory.openSession();
//通过映射关系,获取映射文件中对应的接口
RoleDao roleDao = sqlSession.getMapper(RoleDao.class);
//通过接口调用相关查询方法
List<Role> roleList = roleDao.queryAll();
//将结果输出
System.out.println("roleList = " + roleList);
}
}
效果展示: