ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

mybatis框架

2022-02-25 14:04:04  阅读:131  来源: 互联网

标签:配置文件 框架 plugin 对象 spring maven mybatis


1.SSH三大框架:搭建WEB项目的基础
1)SpringMVC:
解决了:
优化页面跳转
优化参数获取
封装了基于反射的接口访问,不需要去写BaseServlet也不需要在web.xml中配置多个控制器。

2)Spring:
实现了:
IOC实现 自动化扫描与装载类对象
切面化编程(响应)

3)mybatis:ORM(Object Relational Mapping)框架:对象关系
实现了:
对数据库的访问,执行sql语句
建立了实体类与关系型数据库之间数据表的映射关系

2.对MyBatis的解释:
1)每一个MyBatis的应用程序都以一个SqlsessionFactory对象的实例为核心
2)SqlsessionFactory是线程安全的,SqlsessionFactory一旦被创建,在应用执行期间都存在,SqlsessionFactory在应用执行期间不需要重复创建多次,建议使用单例模式。
3)sqlSessionFactory是创建SqlSession的工厂。
sqlSession是mybatis的关键对象,是执行持久化操作的对象,类似于JDBC中的Connection。
sqlSession是应用程序与持久层之间执行交互操作的一个单线程对象,也是mybatis执行持久化操作的关键对象。
sqlSession对象完全包含以数据库为背景的的所有执行sql操作的方法(sqlsession可以做JDBC中preparedStatement对象的事情),他的底层封装了JDBC连接(sqlsession可以做DBHelper中Connection对象的事情),可以用sqlsession实例来直接执行被映射的sql语句。

3.MyBatis框架结构
1)pom.xml配置文件

 <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-tx</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <!-- mybatis核心包 -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.4.6</version>
    </dependency>
    <!-- mybatis集成spring -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>1.3.0</version>
    </dependency>
    <!-- mysql驱动包 -->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.16</version>
    </dependency>
    <!-- 导入dbcp数据库连接池的依赖,用来在spring-mybatis.xml中配置数据库 -->
    <dependency>
      <groupId>commons-dbcp</groupId>
      <artifactId>commons-dbcp</artifactId>
      <version>1.4</version>
    </dependency>

    <!--j2ee相关包 servlet、jsp、jstl-->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>4.0.0</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>jsp-api</artifactId>
      <version>2.2</version>
    </dependency>
    <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
    </dependency>
    
<build>
    <finalName>spring-mvc-demo</finalName>
    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
      <plugins>
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.8.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.22.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-war-plugin</artifactId>
          <version>3.2.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>2.5.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>

2)spring.xml配置文件

<!--myBatis配置-->
    <!--1.引入jdbc配置文件-->
    <bean id="propertyConfigurer"
          class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="location" value="classpath:jdbc.properties" />
    </bean>
    <!--2.配置数据源-数据库连接池   关联jdbc.properties配置文件中的信息-->
    <bean id="dbSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="${driver}" />
        <property name="url" value="${url}" />
        <property name="username" value="${username}" />
        <property name="password" value="${password}" />
        <!-- 最大空闲连接数 -->
        <property name="maxIdle" value="${maxIdle}"/>
        <!-- 初始化连接数 -->
        <property name="initialSize" value="${initialSize}"/>
        <!--最大连接等待时间,连接超时时间 单位:ms-->
        <property name="maxWait" value="${maxWait}"></property>
    </bean>
    <!--3.spring和myBatis整合  通过spring来管理MyBatis的SqlSessionFactory会话工厂 -->
    <bean id="ssf" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!-- 指定数据库连接池引用 -->
        <property name="dataSource" ref="dbSource" />
        <!-- 引入mybatis配置文件 从路径可以看出,mybatis.xml 和spring.xml同级-->
        <property name="configLocation" value="classpath:mybatis.xml"/>
        <!-- 自动扫描mapping.xml文件 -->
        <!--<property name="mapperLocations" value="classpath:mapper/*.xml"></property>-->
    </bean>
    <!--sqlSession模板对象,sqlSession可以实现数据库连接以及包含所有执行SQL操作的方法-->
    <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
        <constructor-arg index="0" ref="ssf" />
    </bean>

3)mybatis.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>
    <!--关联  mapping文件(ORM对象关系映射文件)路径配置 -->
    <mappers>
        <mapper resource="mapper/StaffMapper.xml" />
    </mappers>

</configuration>

4)mapper.StaffMapper.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.st.dao.IStaffDao"><!--namespace属性关联dao层-->
    <!--orm 对象和数据表之间的映射关系-->
    <resultMap id="baseMap" type="com.st.model.Staff">
        <!--
        column 指定数据表字段
        property 指定类属性
        jdbcType 指定数据类型 int-INTEGER string-VARCHAR
        -->
        <result column="staff_id"         property="staffId"        jdbcType="INTEGER"/>
        <result column="staff_name"       property="staffName"      jdbcType="VARCHAR"/>
        <result column="staff_phone"      property="staffPhone"     jdbcType="VARCHAR"/>
    </resultMap>

    <!--
    parameterType 参数类型
    resultMap 结果集映射 对应的是resultMap.id
    -->
    <!--namespace属性关联dao层--><!--指定关联Dao层queryOne方法,参数为Integer类型-->
    <select id="queryOne" parameterType="java.lang.Integer" resultMap="baseMap">
        SELECT * FROM staff_info WHERE staff_id = #{staffId}
    </select>

</mapper>

5)jdbc.properties配置文件

driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/mydb?serverTimezone=GMT%2B8&allowMultiQueries=true
username=root
password=123456

#初始化连接数
initialSize=0
maxActive=20
#最大空闲连接数
maxIdle=20
minIdle=1
#进行数据库连接的最长等待时间
maxWait=60000

6)model /dao /service /controller层

//Dao层实现:
@Repository
public class StaffDao implements IStaffDao {
    @Autowired
    private SqlSession sqlSession;
    @Override
    public Staff queryOne(Integer staffId) {//跟StaffMapper的select标签关联
        /*selectOne(mapper.namespace,params)*/
        /*sqlsession实例对象执行sql语句*/
        return sqlSession.selectOne("com.st.dao.IStaffDao.queryOne",staffId);
    }
}

标签:配置文件,框架,plugin,对象,spring,maven,mybatis
来源: https://blog.csdn.net/weixin_44145887/article/details/123129877

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有