1.创建maven项目最好选择webapp
2.选择webapp项目
3.导入需要的依赖
1.部署mybatis框架部分
1.1在pom.xml添加相关的mybatis依赖 和spring...以及相关依赖
<dependencies>
<!--mybatis框架搭建依赖 -->
<!--junit 测试依赖-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!--mysql数据库依赖-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.22</version>
</dependency>
<!--mybatis框架依赖-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<!--Lombok Java库 不需要再写getter、setter或equals方法,只要有一个注解-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version>
<scope>provided</scope>
</dependency>
<!-- spring依赖 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.13</version>
</dependency>
<!--aop切面模块-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>5.3.13</version>
</dependency>
<!--Spring JDBC 框架负责所有的低层细节,从开始打开连接,准备和执行 SQL 语句,处理异常,处理事务,到最后关闭连接-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.3.13</version>
</dependency>
<!--将 MyBatis 代码无缝地整合到 Spring 中-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.7</version>
</dependency>
<!--Java简单日志门面-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.25</version>
<scope>test</scope>
</dependency>
<!--是一个数据库连接池-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.11</version>
</dependency>
<!--自动装配 自动生成代码生成mybatis模块-->
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.2</version>
</dependency>
</dependencies>
<build>
<finalName>spring_Mybatis</finalName>
<!--自动装配依赖读取 和读取自动生成代码核心配置-->
<plugins>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.2</version>
<configuration>
<configurationFile>src/main/resources/generatorConfig.xml</configurationFile>
<verbose>true</verbose>
<overwrite>true</overwrite>
</configuration>
</plugin>
</plugins>
</build>
4. 在rsourcese目录下新建 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>
</configuration>
4.1在rsourcese下添加log4j.propertie文件
# Set root category priority to INFO and its only appender to CONSOLE.
log4j.rootCategory=DEBUG, CONSOLE,LOGFILE
# log4j.rootCategory=INFO, CONSOLE, LOGFILE
# CONSOLE is set to be a ConsoleAppender using a PatternLayout.
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=- %m %c %l %d{yyyy-MM-dd HH:mm:ss}%n
# LOGFILE is set to be a File appender using a PatternLayout.
log4j.appender.LOGFILE=org.apache.log4j.FileAppender
log4j.appender.LOGFILE.File=./test.log
log4j.appender.LOGFILE.Append=true
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=- %m %l%n
4.2添加日志 在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>
<settings>
<!--开启日志-->
<setting name="logImpl" value="SLF4J"/>
</settings>
</configuration>
4.3依赖已经在pom.xml里面添加了
5部署Spring框架
5.1创建applicationContext.xml配置文件
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop
https://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd">
</beans>
5.2Spring整合MyBatis的依赖 --已经在pom.xml文件添加了
5.配置数据源 druid
5.3添加druid依赖 已经在pom.xml文件添加了
5.4创建druid.properties文件
druid.driver=com.mysql.cj.jdbc.Driver
druid.url=jdbc:mysql://localhost:3306/interesting_shop_db?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
druid.username=root
druid.password=123456
## 连接池参数
druid.pool.init=1
druid.pool.minIdle=3
druid.pool.maxActive=20
druid.pool.maxWait=30000
5.5在Spring配置文件中配置DruidDataSource 跟上面druid.properties文件相结合 都添加在applicationContext.xml文件里面
<!--加载druid.properties文件-->
<context:property-placeholder location="classpath:druid.properties"/>
<!--数据源DataSource的创建-->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName" value="${druid.driver}"/>
<property name="url" value="${druid.url}"/>
<property name="username" value="${druid.username}"/>
<property name="password" value="${druid.password}"/>
<property name="initialSize" value="${druid.pool.init}"/>
<property name="minIdle" value="${druid.pool.minIdle}"/>
<property name="maxActive" value="${druid.pool.maxActive}"/>
<property name="maxWait" value="${druid.pool.maxWait}"/>
</bean>
5.6在spring配置文件里面 创建SqlSessionFactory --使用 MyBatis 首先是使用配置或者代码去生产 SqlSessionFactory,而 MyBatis 提供了构造器 SqlSessionFactoryBuilder。都添加在applicationContext.xml文件里面
<!--MyBatis的SqlSessionFactory对象的创建-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!--配置数据源-->
<property name="dataSource" ref="dataSource"/>
<!--配置Mapper文件路径 要在 rsourcese目录下创建mappers文件 里面创建Mapper.xml配置文件 -->
<property name="mapperLocations" value="classpath:mappers/*Mapper.xml"/>
<!--配置需要定义别名的实体类的包-->
<property name="typeAliasesPackage" value="com.xxx.pojo"/>
<!--配置MyBatis的配置文件-->
<property name="configLocation" value="classpath:mybatis-config.xml"/>
</bean>
6创建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 命名空间
id 标识
resultType 查询结果的返回值类型
-->
<mapper namespace="com.xxx.dao.UserDao">
</mapper>
6.1把Mapper 创建所有的dao接口并存储在Spring容器中 都添加在applicationContext.xml文件里面
<!--加载dao包中的所有接口,通过sqlSessionFactory获取sqlSession对象,然后创建所有的dao接口并存储在Spring容器中-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
<property name="basePackage" value="com.gyh.dao"/>
</bean>
到这里基本搭建都完成了,接下来就是,搭建自动生成代码环境配置以及测试
7.配置 Mybatis代码生成器
7.1核心配置文件 文件名为genertorComfig.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<!--
数据库驱动
在左侧project边栏的External Libraries中找到mysql的驱动,右键选择copy path 这里选择自己的msyql依赖路径
-->
<classPathEntry location="D:\Softinstall\apache-maven-3.8.4\repository\mysql\mysql-connector-java\8.0.18\mysql-connector-java-8.0.18.jar"/>
<context id="DB2Tables" targetRuntime="MyBatis3">
<commentGenerator>
<!-- 是否去除日期那行注释 -->
<property name="suppressDate" value="true"/>
<!-- 是否去除自动生成的注释 true:是 : false:否 -->
<property name="suppressAllComments" value="true"/>
</commentGenerator>
<!-- 数据库链接地址账号密码 -->
<jdbcConnection
driverClass="com.mysql.cj.jdbc.Driver"
<!--数据库链接地址 要注意的是这个是8.0版本的数据库链接地址?serverTimezone=GMT%2B8 5.0版本的数据库自己注意看下-->
connectionURL="jdbc:mysql://127.0.0.1:3306/test?serverTimezone=GMT%2B8"
<!--修改成自己的数据库名-->
userId="root"
<!--修改成自己的数据库密码-->
password="root123">
</jdbcConnection>
<!--
java类型处理器
用于处理DB中的类型到Java中的类型,默认使用JavaTypeResolverDefaultImpl;
注意一点,默认会先尝试使用Integer,Long,Short等来对应DECIMAL和NUMERIC数据类型;
true:使用 BigDecimal对应DECIMAL和NUMERIC数据类型
false:默认,把JDBC DECIMAL和NUMERIC类型解析为Integer
-->
<javaTypeResolver>
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver>
<!-- 生成Model类存放位置 -->
<javaModelGenerator targetPackage="com.csdj.vo" targetProject="src/main/java">
<!-- 在targetPackage的基础上,根据数据库的schema再生成一层package,最终生成的类放在这个package下,默认为false -->
<property name="enableSubPackages" value="true"/>
<!-- 设置是否在getter方法中,对String类型字段调用trim()方法 -->
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<!--生成映射文件存放位置-->
<sqlMapGenerator targetPackage="mappers" targetProject="src/main/resources">
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>
<!--生成Dao类存放位置-->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.csdj.dao" targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
<!--需要修改 数据库名:tableName="student"
以及对应实体类名:domainObjectName="Student" -->
<table tableName="student" domainObjectName="Student"
enableCountByExample="false" enableUpdateByExample="false"
enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>
</context>
</generatorConfiguration>
7.2生成代码在idea右侧选择 双击就可以自动生成了
自动生成代码小结,只适合简单的curd 也可以生成好 当对应的模板后面直接自己写
8测试
在test文件夹下面编写测试类
import com.csdj.dao.UserMapper;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
* 测试整合是否完成
*/
public class Stater {
public static void main(String[] args) {
ApplicationContext cxt = new ClassPathXmlApplicationContext("applicationContext.xml");
UserMapper userMapper = (UserMapper) cxt.getBean("userMapper");
userMapper.selectByPrimaryKey(1);
System.out.println(userMapper);
}
}
整个-整合目录