项目中使用Mybatis
适合于新手迅速搭建一个mybatis项目,里面涉及到的日志等其他jar,以及mybatis具体细节使用,请看前面的文章,谢谢观看。
一、java包
1.1 mapper包
这个包中主要放一个有个一个实体类操作数据库的接口与xml文件
⭐mapper.xml的配置如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jzq.dao.BlogMapper">
<!--缓存-->
<!--sql操作标签-->
</mapper>
⭐具体例子:
mapper.java代码:
package com.jzq.dao;
import com.jzq.pojo.Blog;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
public interface BlogMapper {
// 查询一个文章
Blog queryBlog(@Param("bid") String bid);
// 插入一篇文章
int insertBlog(Map<String, Object> map);
}
mapper.xml代码:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jzq.dao.BlogMapper">
<!--配置二级缓存-->
<!--<cache eviction="FIFO"-->
<!-- flushInterval="60000"-->
<!-- size="512"-->
<!-- readOnly="true"/>-->
<cache/>
<select id="queryBlog" parameterType="string" resultType="Blog" useCache="true">
select * from mybatis.blog
<where>
bid = #{bid}
</where>
</select>
<insert id="insertBlog" parameterType="map">
insert into blog values(#{bid}, #{name}, #{title}, #{first_score})
</insert>
</mapper>
1.2 utils包
这个包主要放一些工具类,以及⭐MybatisUtils类⭐!!!
⭐ MybatisUtils代码如下:
构建SqlSessionFactory:构建SqlSession的工厂类,需要通过mybatis-config.xml文件。
重载生成SqlSession的方法,自动提交事务与非自动提交事务!
package com.jzq.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 MybatisUtils {
private static SqlSessionFactory sqlSessionFactory;
// 从 XML 中构建 SqlSessionFactory
// 每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为核心的。
static {
try {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
// 既然 有了 SqlSesstionFactory, 顾名思义,我们就可以从中获得SqlSession的实例了
// SqlSession 完全包含了面向数据库执行SQL命令所需的所有方法。
public static SqlSession getSqlSession(Boolean commitFlag) {
// 传参为 true 表示, 自动提交事务
SqlSession sqlSession = sqlSessionFactory.openSession(commitFlag);
return sqlSession;
}
public static SqlSession getSqlSession() {
// 传参为 true 表示, 自动提交事务
SqlSession sqlSession = sqlSessionFactory.openSession();
return sqlSession;
}
}
二、resources包
这个包放一些静态文件,配置文件,例如日志:log4.properties、数据库连接数据: db.properties、mybatis核心配置文件: mybatis-config.xml
2.1 log4.properties
xml配置如下: (注意修改自己的log输出路径)log4j.appender.file.File=./log/com.jzq.log
log4j.rootLogger=DEBUG,console,file
#控制台输出的相关设置
log4j.appender.console = org.apache.log4j.ConsoleAppender
log4j.appender.console.Target = System.out
log4j.appender.console.Threshold=DEBUG
log4j.appender.console.layout = org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=[%c]-%m%n
#文件输出的相关设置
log4j.appender.file = org.apache.log4j.RollingFileAppender
log4j.appender.file.File=./log/com.jzq.log
log4j.appender.file.MaxFileSize=10mb
log4j.appender.file.Threshold=DEBUG
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=[%p][%d{yy-MM-dd}][%c]%m%n
#日志输出级别
log4j.logger.org.mybatis=DEBUG
log4j.logger.java.sql=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.ResultSet=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
2.2 db.properties
这里就是连接数据库需要配置的参数,根据自己情况填写!
⭐这是是mybatis-config.xml引入的参数,也可以在mybatis-config.xml设置,账号和密码就在下面的mybatis-config.xml中设置的!!!
driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://x.x.x.x:3306/xxxxx?userSSL=true&useUnicode=true&charaterEncoding=UTF-8"
2.3 重要的mybatis-config.xml
非常重要的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 是mybatis的核心配置文件-->
<configuration>
<!-- 引入静态文件 -->
<properties resource="db.properties">
<property name="username" value="xxxxxxx"/>
<property name="password" value="xxxxxxxxx"/>
</properties>
<settings>
<setting name="logImpl" value="LOG4j"/>
<!-- 将数据库的表中的字段的_自动转换成驼峰式 -->
<setting name="mapUnderscoreToCamelCase" value="true"/>
<!-- 开启二级缓存 -->
<setting name="cacheEnabled" value="true"/>
</settings>
<!-- 可以给实体类起别名 -->
<!-- 指定一个固定类,为其起别名 -->
<typeAliases>
<typeAlias type="com.jzq.pojo.Blog" alias="Blog"></typeAlias>
</typeAliases>
<!-- 指定一个包名, Mybatis会在包名下面搜索Java Bean, 其包下的类默认都是小写字母开头类名-->
<!-- <typeAliases>-->
<!-- <package name="com.com.jzq.pojo"/>-->
<!-- </typeAliases>-->
<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>
<!-- 每个mapper.xml都需要在Mybatis核心配置文件中注册!-->
<mappers>
<!-- <mapper resource="com/jzq/dao/student/StudentMapper.xml"/>-->
<mapper resource="com/jzq/dao/BlogMapper.xml"/>
</mappers>
</configuration>
三、pom中需要注意的(Maven项目)
3.1 常用jar包引入
在dependencies标签内引入用到的jar包
<dependencies>
... 具体在下文介绍
</dependencies>
⭐测试的jar:junit
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
⭐导入mysql的配置文件的jar: mysql-connector-java
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.22</version>
</dependency>
⭐ mybatis的jar:
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
⭐ 日志log4j的jar:
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
⭐lombok 的jar:
实体类不写代码的jar,不推荐用!
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
<scope>provided</scope>
</dependency>