SSM:Spring SpringMVC MVC
SSH:Spring SpringMVC Hibernate
MVC框架:
M: Model 模型层 JDBC(mybatis
/ hibernate:代替JDBC,完成与数据库交互的过程)
V:View 视图层
C:Controller 控制层 Servlet / SpringMVC
/ struts2
Spring框架:对象管理 各个框架的整合 事务处理等
Springboot框架:
Mybatis框架:
是一个持久层框架:用来代替JDBC,完成与数据库交互的框架
- 基于SQL语法,简单易学
- SQL语句封装在配置文件中(.xml),便于统一管理与维护,降低了程序的耦合度
- 耦合度:在一个类中new另一个对象
A :B b = new B(); b.方法()
B :C c = new C(); c.方法()
C :
- 程序调试方便
搭建框架
- 创建一个普通的java工程
- 引入jar
- Mybatis-3.2.7 mybatis的核心jar
- mysql驱动 jar
- Commons-logging log4j: 进行日志管理的jar
开发流程
- 引入Mybatis的核心配置文件,在配置文件中配置连接环境
<environments default="mysql">
<environment id="mysql">
<transactionManager type="jdbc"></transactionManager>
<!-- 配置数据源 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
- 针对数据库中要维护的实体构建实体类
- 基于mapper接口的形式开发
- 创建mapper接口,定义方法
public interface UserInfoMapper {
public UserInfo getInfoById(int id);
}
- 创建接口对应的SQL映射文件,实现功能
<?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="mybatis.mapper.UserInfoMapper" >
<!--
id:必须和接口中的方法名一致 注意:mapper接口不支持方法重载
parameterType:是参数类型 全类名
resultType:返回值类型
SQL映射文件中:sql语句获取参数的语法:#{} ${}
#{}:没有SQL注入问题
${}:有SQL注入问题
增加数据
修改数据
删除数据(删除一条数据 批量数据)
查询数据(单表查询 多表查询 组合查询 分页查询 有无参数 多个参数 返回值一条或者多条)
-->
<select id="getInfoById" parameterType="java.lang.Integer" resultType="mybatis.bean.UserInfo" >
select * from userinfo where id=#{id}
</select>
</mapper>
- 将SQL映射文件注入到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>
<!-- xml文档有且只有一个根元素 -->
<!-- mybatis核心配置文件元素是有顺序的 -->
<!-- .properties文件:Java属性文件 信息资源文件-->
<!-- properties:用来当前配置文件资源使用的资源文件
properties:配置property子元素,含义是Java属性的扩充,这里扩充的属性的优先级低
Java属性文件中的属性优先级高
resource:设定要引入的文件 src文件
-->
<properties resource="db.properties">
<property name="dbpass" value="123456"/>
</properties>
<!-- settings:用来配置和数据库交互过程中的一些优化项 -->
<settings>
<!-- 开启二级缓存 -->
<setting name="cacheEnabled" value="true"/>
</settings>
<!-- typeAliases元素:用来配置类别名 -->
<!--typeAlias:
type:要配置别名的类的全类名
alias:别名
-->
<typeAliases>
<!-- mybatis的内置类别名
int double boolean string list set map
-->
<!-- <typeAlias type="mybatis.bean.UserInfo" alias="UserInfo"/>-->
<!--package元素:采用组件扫描的形式其别名,默认 把一个包中所有类都起别名,而且别名就是类名 -->
<package name="mybatis.bean"/>
</typeAliases>
<!-- 环境配置 -->
<!-- environments
default属性:设定默认使用那一套环境 与environment元素的id要完全相同
-->
<environments default="mysql">
<environment id="mysql">
<!-- transactionManager元素:配置事务管理器
可省略</transactionManager>
type属性:设定事务的管理方式
jdbc:采用传统的JDBC的方式进行事务管理(获取连接之后,关闭自动提交 手动的提交和回滚)
MANAGED:使用容器(Spring框架)进行事务处理
-->
<transactionManager type="jdbc"></transactionManager>
<!-- 配置数据源 -->
<!-- dataSource元素:
type属性:用来配置与数据库的管理方式
POOLED:使用数据库连接池进行连接的管理
UNPOOLED:不使用数据库连接池进行连接的管理
JNDI:采用第三方(Tomacat Spring)连接池进行连接管理
-->
<dataSource type="POOLED">
<property name="driver" value="${dbdriver}"/>
<property name="url" value="${dburl}"/>
<property name="username" value="${dbuser}"/>
<property name="password" value="${dbpass}"/>
</dataSource>
</environment>
</environments>
<!-- 将sql映射文件注入到mybatis核心配置文件中 -->
<!--mappers元素: -->
<mappers>
<!--package:组件扫描的形式管理SQL映射文件 -->
<package name="mybatis.mapper"/>
<!-- <mapper resource="mybatis/mapper/UserInfoMapper.xml" />-->
</mappers>
</configuration>
SQL映射文件开发
<?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="mybatis.mapper.UserInfoMapper" >
<!--
id:必须和接口中的方法名一致 注意:mapper接口不支持方法重载
parameterType:是参数类型 全类名
resultType:返回值类型
SQL映射文件中:sql语句获取参数的语法:#{} ${}
#{}:没有SQL注入问题
${}:有SQL注入问题
增加数据
修改数据
删除数据(删除一条数据 批量数据)
查询数据(单表查询 多表查询 组合查询 分页查询 有无参数 多个参数 返回值一条或者多条)
-->
<select id="getInfoById" parameterType="java.lang.Integer" resultType="mybatis.bean.UserInfo" >
select * from userinfo where id=#{id}
</select>
</mapper>