JavaWEB大神成长篇:MyBatis入门到精通之告别繁琐JDBC(第五期)
·
1_MyBatis入门
-
梗概
-
1_认识框架
-
2_认识ORM
-
3_认识MyBatis
2_MyBatis初次使用
-
1_创建maven项目导入相关依赖
-
但凡是框架,使用都是分三步走
-
先创建一个空项目用于存放后面 Mybatis 相关项目模块

-
项目名为 mybatisAll 即可

-
如果想看到项目名可以close项目后再次open即可


-
接下来设置 maven 为我们自己安装的, 不用 idea 自带的 (当然用自带的也行)


-
在当前项目中创建模块

-
选择 maven 项目 next

-
输入 Groupid 和 Artifactid 然后 finish

-
检查项目目前在磁盘上的存放路径 然后 next

-
检查项目目录结构是否有缺失

-
MyBatis 官网说明文档
-
在 pom.xml 中导入 MyBatis 相关依赖 jar 文件
<?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>com.msb</groupId> <artifactId>mybatisTest01</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <dependencies> <!--mysqlConnector--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.16</version> </dependency> <!--mybatis 核心jar包--> <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.1</version> <scope>test</scope> </dependency> <!--lombok --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.12</version> <scope>provided</scope> </dependency> </dependencies> </project> -
安装lombok插件后, 重启idea

-
导入lombok依赖后, 单独设置启用注解处理

-
-
2_准备数据库_包结构和实体类
-
数据库

-
项目结构

-
实体类Dept
package com.xxx.pojo; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import java.io.Serializable; @Data @AllArgsConstructor @NoArgsConstructor public class Dept implements Serializable { private Integer deptno; private String dname; private String loc; }
-
-
3_准备Mapper映射文件和核心配置文件
-
resources目录下 创建com/xxx/mapper目录, 然后添加DeptMapper.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="aaa"> <!--public List<Dept> findAll(){ }--> <select id="findAll" resultType="com.msb.pojo.Dept" > select * from dept </select> </mapper> -
resources目录下准备sqlMapConfig.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> <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://127.0.0.1:3306/mydb? useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai"/> <property name="username" value="root"/> <property name="password" value="root"/> </dataSource> </environment> </environments> <!--加载mapper映射文件--> <mappers> <mapper resource="com/xxx/mapper/DeptMapper.xml"/> </mappers> </configuration>
-
-
4_运行测试

-
在test目录下开发测试代码并运行

package com.xxx.test; import com.msb.pojo.Dept; 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.IOException; import java.io.InputStream; import java.util.List; public class Test1 { private SqlSession sqlSession; @Before public void init(){ SqlSessionFactoryBuilder ssfb = new SqlSessionFactoryBuilder(); InputStream resourceAsStream = null; try { resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml"); } catch (IOException e) { e.printStackTrace(); } SqlSessionFactory factory = ssfb.build(resourceAsStream); sqlSession=factory.openSession(); } @Test public void testFindAll(){ // 调用SQL语句 List<Dept> list = sqlSession.selectList("findAll"); for (Dept dept : list) { System.out.println(dept); } } @After public void release(){ // 关闭SQLSession sqlSession.close(); } }
-
3_MyBatis配置详解
-
1_log4j1 和 log4j2 的简单配置
-
项目中添加依赖
log4j2 <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.12.1</version> </dependency> log4j1 <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> -
log4j 1
-
将
log4j.properties文件负责到src下 -
另外在其中可以将全局的日志级别调高,避免大量 debug 信息的干扰
-
同时将对映射文件的操作调低,可以用来显示 SQL 语句的调试信息
-
开发阶段,建议启动控制的日志
# 定义全局日志级别调试阶段推荐debug log4j.rootLogger = debug,stdout log4j.appender.stdout = org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target = System.err log4j.appender.stdout.layout = org.apache.log4j.SimpleLayout log4j.appender.logfile = org.apache.log4j.FileAppender log4j.appender.logfile.File = d:/msb.log log4j.appender.logfile.layout = org.apache.log4j.PatternLayout log4j.appender.logfile.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} %l %F %p %m%n
-
-
log4j 2
-
将 log4j2.xml 文件负责到 resources 下
<?xml version="1.0" encoding="UTF-8"?> <Configuration status="DEBUG"> <Appenders> <Console name="Console" target="SYSTEM_ERR"> <PatternLayout pattern="%d{YYYY-MM-dd HH:mm:ss} [%t] %-5p %c{1}:%L - %msg%n" /> </Console> <RollingFile name="RollingFile" filename="log/test.log" filepattern="${logPath}/%d{YYYYMMddHHmmss}-fargo.log"> <PatternLayout pattern="%d{YYYY-MM-dd HH:mm:ss} [%t] %-5p %c{1}:%L - %msg%n" /> <Policies> <SizeBasedTriggeringPolicy size="10 MB" /> </Policies> <DefaultRolloverStrategy max="20" /> </RollingFile> </Appenders> <Loggers> <Root level="INFO"> <AppenderRef ref="Console" /> </Root> </Loggers> </Configuration> -
核心配置文件中可以指定日志打印方式

-
-
-
2_关于事务配置

-
3_关于映射文件的加载方式
-
5_关于外部属性配置文件存储数据库连接信息
-
在 resources 下准备 jdbc.properties 属性配置文件

-
配置文件中的内容
jdbc_driver = com.mysql.cj.jdbc.Driver jdbc_url = jdbc:mysql://127.0.0.1:3306/mydb?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai jdbc_username = root jdbc_password = root -
在核心配置文件中引入 db.properties 属性文件
<?xml version="1.0" encoding="UTF-8" ?> <!-- xml文档约束 约束xml文档中可以有哪些标签,哪些属性,以及标签的包含关系和顺序.... dtd 约束 schema 约束 --> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <properties resource="jdbc.properties"></properties> <settings> <!--设置日志处理方式--> <setting name="logImpl" value="LOG4J"/> </settings> <!--设置实体类别名--> <typeAliases> <!-- 通过包扫描给所有的实体类起别名 给指定报名下的所有类起别名 默认每个实体类的别名是首字母小写的类名 Dept dept Emp emp --> <package name="com.msb.pojo"/> </typeAliases> <!--配置数据库链接信息--> <environments default="mysql"> <!--数据源1--> <environment id="mysql"> <transactionManager type="JDBC"/> <!--一个数据源--> <dataSource type="POOLED"> <property name="driver" value="${jdbc_driver}"/> <property name="url" value="${jdbc_url}"/> <property name="username" value="${jdbc_username}"/> <property name="password" value="${jdbc_password}"/> </dataSource> </environment> </environments> <!--加载映射文件的--> <mappers> <mapper resource="com/msb/mapper/DeptMapper.xml"/> </mappers> </configuration>
-
更多推荐





所有评论(0)