13.Mybatis常用配置总结
13.1Mybatis流程
项目结构
Mapper.xml和Mapper接口放在一起
Mapper.xml和Mapper接口放在相同包名下,Mapper.xml放在Resources目录下
Mybatis项目构建
1.新建配置文件
- mybatis-config.xml 核心配置文件(后续不要忘记在此注册Mappper)
- db.properties 数据库配置文件
- log4j.properties 日志配置文件
2.新建工具类
- MybatisUtils 提取生成SqlSession工具类
- 其他工具类
3.新建实体类
4.新建dao层
- Mapper接口
- Mapper.xml(类实现类,书写sql)(每个需要在mybatis-config.xml 核心配置文件中注册)
5.测试
13.2常用配置
MyBatis的maven项目pom.xml常用依赖
<?xml version="1.0" encoding="UTF-8"?>
<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>org.example</groupId>
<artifactId>mybatis3</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<!--mybatis-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.3</version>
</dependency>
<!--junit-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13</version>
</dependency>
<!--log4j日志输出 -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<!--lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
</dependency>
<!--mybatis-ehcache-->
<dependency>
<groupId>org.mybatis.caches</groupId>
<artifactId>mybatis-ehcache</artifactId>
<version>1.2.1</version>
</dependency>
</dependencies>
<!--在build中配置resources,来防止我们资源导出的失败的问题-->
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>
</project>
1.新建配置文件
-
mybatis-config.xml 核心配置文件(后续不要忘记在此注册Mappper)
<?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> <properties resource="db.properties"/> <settings> <!--开启日志--> <setting name="logImpl" value="LOG4J"/> <!--驼峰命名转换--> <setting name="mapUnderscoreToCamelCase" value="true"/> <!--开启缓存--> <setting name="cacheEnabled" value="true"/> </settings> <!--简化Mapper.xml中书写returnType类型,为实体类起别名--> <typeAliases> <package name="com.kuang.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--> <mappers> <mapper class="com.kuang.dao.BlogMapper"/> </mappers> </configuration>
-
db.properties 数据库配置文件
driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=utf8 username=root password=123456
-
log4j.properties 日志配置文件
#将等级为DEBUG的日志信息输出到console和file这两个目的地,console和file的定义在下面的代码 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/kuang.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.新建工具类
-
MybatisUtils 提取生成SqlSession工具类
//工具类 //需要获得数据库操作对象SqlSession //SqlSessionFactory---->SqlSession public class MybatisUtils { private static SqlSessionFactory sqlSessionFactory;//提升作用域 static { //使用Mybatis的第一步:获取SqlSessionFactory对象 try { String resource = "mybatis-config.xml"; InputStream inputStream =Resources.getResourceAsStream(resource); sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); } catch (IOException e) { e.printStackTrace(); } } //有了SqlSessionFactory以后,我们可以从中获得SqlSession的实例 //SqlSession提供了在数据库执行 SQL命令 所需的所有方法 public static SqlSession getSqlSession(){ return sqlSessionFactory.openSession(); } }
-
其他工具类,如IDUtils
public class IDUtils { public static String getId(){ return UUID.randomUUID().toString().replaceAll("-",""); } }
3.新建实体类
import java.util.Date;
@Data
public class Blog {
private String id;
private String title;
private String author;
private Date createTime;
private int views;
}
4.新建dao层
-
Mapper接口
public interface BlogMapper { //查询 List<Blog> queryBlogIf(Map map); }
-
Mapper.xml(类实现类,书写sql)(每个需要在mybatis-config.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.kuang.dao.BlogMapper"> <select id="queryBlogIf" parameterType="map" resultType="Blog"> select * from `blog` <where> <if test="author!=null"> author=#{author} </if> <if test="title!=null"> and title=#{title} </if> </where> </select> </mapper>
5.测试
public class BlogTest {
@Test
public void test(){
SqlSession session = MybatisUtils.getSqlSession();
BlogMapper mapper = session.getMapper(BlogMapper.class);
Map<String,Object> map=new HashMap<String, Object>();
map.put("title","Java如此简单2");
map.put("author","狂神说2");
List<Blog> blogs = mapper.queryBlogIf(map);
for (Blog blog : blogs) {
System.out.println(blog);
}
session.commit();
session.close();
}
}