当前位置: 首页 > news >正文

在北京大学生做家教的网站站长工具seo综合查询分析

在北京大学生做家教的网站,站长工具seo综合查询分析,做外贸网站策划,有一个专门做演讲的网站1.mybatis介绍 MyBatis 是一款优秀的持久层框架MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的过程MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 实体类映射成数据库中的记录 官网 Mybatis中文官方文档 : https…

1.mybatis介绍

  • MyBatis 是一款优秀的持久层框架
  • MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的过程
  • MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 实体类映射成数据库中的记录

官网

  • Mybatis中文官方文档 : https://mybatis.net.cn/
  • GitHub : GitHub - mybatis/mybatis-3: MyBatis SQL mapper framework for Java

2.持久化和持久层

持久化

  • 持久化是将程序数据在持久状态和瞬时状态间转换的机制。
    • 即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的对象存储在数据库中,或者存储在磁盘文件中、XML数据文件中等等。
    • JDBC就是一种持久化机制。文件IO也是一种持久化机制。
    • 在生活中 : 将鲜肉冷藏,吃的时候再解冻的方法也是。将水果做成罐头的方法也是。
  • 为什么需要持久化服务呢?那是由于内存本身的缺陷引起的
    • 内存断电后数据会丢失,但有一些对象是无论如何都不能丢失的,比如银行账号等,遗憾的是,人们还无法保证内存永不掉电。
    • 内存过于昂贵,与硬盘、光盘等外存相比,内存的价格要高2~3个数量级,而且维持成本也高,至少需要一直供电吧。所以即使对象不需要永久保存,也会因为内存的容量限制不能一直呆在内存中,需要持久化来缓存到外存。

持久层

  • 什么是持久层?
    • 完成持久化工作的代码块 . ——> dao层 【DAO (Data Access Object) 数据访问对象】
    • 大多数情况下特别是企业级应用,数据持久化往往也就意味着将内存中的数据保存到磁盘上加以固化,而持久化的实现过程则大多通过各种关系数据库来完成。
    • 不过这里有一个字需要特别强调,也就是所谓的“层”。对于应用系统而言,数据持久功能大多是必不可少的组成部分。也就是说,我们的系统中,已经天然的具备了“持久层”概念?也许是,但也许实际情况并非如此。之所以要独立出一个“持久层”的概念,而不是“持久模块”,“持久单元”,也就意味着,我们的系统架构中,应该有一个相对独立的逻辑层面,专著于数据持久化逻辑的实现.
    • 与系统其他部分相对而言,这个层面应该具有一个较为清晰和严格的逻辑边界。 【说白了就是用来操作数据库存在的!】

3.mybatis的jar包

<dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>x.x.x</version>
</dependency>
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>x.x.x</version>
</dependency>

如果已经与springboot集成,则是这个jar包

        <dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>x.x.x</version></dependency>

 4.mybatis-config配置文件

数据库连接看自己的版本mysql的版本自行修改

<?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="cacheEnabled" value="true"/></settings><!--实体别名--><typeAliases><typeAlias type="com.x.x.x" alias="user"/></typeAliases><!--环境信息--><environments default="mysql"><environment id="mysql"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="com.mysql.cj.jdbc.Driver"/><property name="url"value="jdbc:mysql://localhost:3306/test?useUnicode=true&amp;serverTimezone=GMT%2B8"/><property name="username" value="root"/><property name="password" value="123456"/></dataSource></environment></environments><!--Mapper映射文件--><mappers><mapper resource="userDaoMapper.xml"/></mappers>
</configuration>


5.MyBatis工具类  

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 java.io.IOException;
import java.io.InputStream;
public class MybatisUtils {private static SqlSessionFactory sqlSessionFactory;static {try {String resource = "mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);} catch (IOException e) {e.printStackTrace();}}//获取SqlSession连接public static SqlSession getSession(){return sqlSessionFactory.openSession();}
}

6.Mapper.xml配置文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.x.x.xMapper"><select id="selectUser" resultType="com.x.x.x">select * from x</select>
</mapper>

7.Maven静态资源过滤问题

<resources><resource><directory>src/main/java</directory><includes><include>**/*.properties</include><include>**/*.xml</include></includes><filtering>false</filtering></resource><resource><directory>src/main/resources</directory><includes><include>**/*.properties</include><include>**/*.xml</include></includes><filtering>false</filtering></resource>
</resources>

 权限问题在springboot整合后也需要使用

 8.核心配置文件

  • mybatis-config.xml 系统核心配置文件
  • MyBatis 的配置文件包含了会深深影响 MyBatis 行为的设置和属性信息。
  • 能配置的内容如下:
  1. configuration(配置)
  2. properties(属性)
  3. settings(设置)
  4. typeAliases(类型别名)
  5. typeHandlers(类型处理器)
  6. objectFactory(对象工厂)
  7. plugins(插件)
  8. environments(环境配置)
  9. environment(环境变量)
  10. transactionManager(事务管理器)
  11. dataSource(数据源)
  12. databaseIdProvider(数据库厂商标识)
  13. mappers(映射器)
  14. <!-- 注意元素节点的顺序!顺序不对会报错 -->

我们可以阅读 mybatis-config.xml 上面的dtd的头文件

A.environments元素

<environments default="development"><environment id="development"><transactionManager type="JDBC"><property name="..." value="..."/></transactionManager><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>

配置MyBatis的多套运行环境,将SQL映射到多个不同的数据库上,必须指定其中一个为默认运行环境(通过default指定)

  • 子元素节点:environment

  • 具体的一套环境,通过设置id进行区别,id保证唯一!

子元素节点:transactionManager - [ 事务管理器 ]

<!-- 语法 -->
<transactionManager type="[ JDBC | MANAGED ]"/>
  • 这两种事务管理器类型都不需要设置任何属性。
    • 子元素节点:数据源(dataSource)

      • dataSource 元素使用标准的 JDBC 数据源接口来配置 JDBC 连接对象的资源。

      • 数据源是必须配置的。

      • 有三种内建的数据源类型

type="[UNPOOLED|POOLED|JNDI]")
  • unpooled: 这个数据源的实现只是每次被请求时打开和关闭连接。

  • pooled: 这种数据源的实现利用“池”的概念将 JDBC 连接对象组织起来 , 这是一种使得并发 Web 应用快速响应请求的流行处理方式。

  • jndi:这个数据源的实现是为了能在如 Spring 或应用服务器这类容器中使用,容器可以集中或在外部配置数据源,然后放置一个 JNDI 上下文的引用。

  • 数据源也有很多第三方的实现,比如dbcp,c3p0,druid等等….

B.typeAliases优化

类型别名是为 Java 类型设置一个短的名字。它只和 XML 配置有关,存在的意义仅在于用来减少类完全限定名的冗余。

<!--配置别名,注意顺序-->
<typeAliases><typeAlias type="com.x.pojo.User" alias="User"/>
</typeAliases>

当这样配置时,User可以用在任何使用com.x.pojo.User的地方。

也可以指定一个包名,MyBatis 会在包名下面搜索需要的 Java Bean,比如:

<typeAliases><package name="com.x.pojo"/>
</typeAliases>

每一个在包的 Java Bean

在没有注解的情况下,会使用 Bean 的首字母小写的非限定类名来作为它的别名。

若有注解,则别名为其注解值。见下面的例子:

@Alias("user")
public class User {...
}

9.完整引入mybatis以及测试类jar包

<!-- 导入依赖 -->
<dependencies><!--mysql驱动--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>x.x.x</version></dependency><!--mybatis--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>x.x.x</version></dependency><!--junit--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version></dependency>
</dependencies>
<build><resources><resource><directory>src/main/java</directory><includes><include>**/*.properties</include><include>**/*.xml</include></includes><filtering>true</filtering></resource><resource><directory>src/main/resources</directory><includes><include>**/*.properties</include><include>**/*.xml</include></includes><filtering>true</filtering></resource></resources>
</build>

10.测试类

public class MyTest {@Testpublic void selectUser() {SqlSession session = MybatisUtils.getSession();//填写自己的内容session.close();}
}

注意

  • 所有的增删改操作都需要提交事务!
  • 接口所有的普通参数,尽量都写上@Param参数,尤其是多个参数时,必须写上!
  • 有时候根据业务的需求,可以考虑使用map传递参数!
  • 为了规范操作,在SQL的配置文件中,我们尽量将Parameter参数和resultType都写上!

11.其他配置

  • 设置 (settings) 相关 => 查看帮助文档
    • 懒加载
    • 日志实现
    • 缓存开启关闭

一个配置完整的 settings 元素的示例如下:

<settings><setting name="cacheEnabled" value="true"/><setting name="lazyLoadingEnabled" value="true"/><setting name="multipleResultSetsEnabled" value="true"/><setting name="useColumnLabel" value="true"/><setting name="useGeneratedKeys" value="false"/><setting name="autoMappingBehavior" value="PARTIAL"/><setting name="autoMappingUnknownColumnBehavior" value="WARNING"/><setting name="defaultExecutorType" value="SIMPLE"/><setting name="defaultStatementTimeout" value="25"/><setting name="defaultFetchSize" value="100"/><setting name="safeRowBoundsEnabled" value="false"/><setting name="mapUnderscoreToCamelCase" value="false"/><setting name="localCacheScope" value="SESSION"/><setting name="jdbcTypeForNull" value="OTHER"/><setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>
</settings>

类型处理器

  • 无论是 MyBatis 在预处理语句(PreparedStatement)中设置一个参数时,还是从结果集中取出一个值时, 都会用类型处理器将获取的值以合适的方式转换成 Java 类型。
  • 你可以重写类型处理器或创建你自己的类型处理器来处理不支持的或非标准的类型。【了解即可】

对象工厂

  • MyBatis 每次创建结果对象的新实例时,它都会使用一个对象工厂(ObjectFactory)实例来完成。
  • 默认的对象工厂需要做的仅仅是实例化目标类,要么通过默认构造方法,要么在参数映射存在的时候通过有参构造方法来实例化。
  • 如果想覆盖对象工厂的默认行为,则可以通过创建自己的对象工厂来实现。【了解即可】
http://www.ds6.com.cn/news/64005.html

相关文章:

  • 贵阳网站建设哪家好武汉网站建设方案优化
  • 厦门网站制作推广电商从零基础怎么学
  • 自己做的网站可以查看谁访问吗seo推广多少钱
  • 手机商城网站建设设计方案网络运营和网络营销的区别
  • 网站建设开源代码网站建设模板
  • 给你网站你会怎么做的网店seo名词解释
  • 做视频网站要什么格式搜索引擎调词平台哪个好
  • wordpress空俩格seo排名赚app
  • 网站双倍浮动seo网站优化知识
  • 个人网站免费搭建seo自动工具
  • web网站开发的设计思想湖南网络推广公司大全
  • 文化公司网站建设策划书网站设计制作
  • 破解网站后台密码有人做吗深圳网站做优化哪家公司好
  • 怎么查那些人输入做网站免费建站工具
  • 怎么建网站锦州福州seo技术培训
  • 哪家做网站比较好全网万能搜索引擎
  • 网站建设知识文章公司营销策划方案案例
  • 哪个餐饮店微网站做的有特色网站点击量与排名
  • 做网站开发面临的困难网站推广的方式有哪些
  • 湛江网络营销邯郸网站建设优化
  • 用centos搭建wordpress网站seo推广排名
  • 分销系统开发多少钱贵州seo和网络推广
  • 网站建设服务费属于什么科目seo综合查询网站源码
  • 车辆优化管理专业网站全网搜索关键词查询
  • 深圳做网站报价seo推广的公司
  • 国际建设管理学会网站百度一下 你就知道官网
  • 怎么做网站教程 用的工具现在的seo1发布页在哪里
  • 不想让网站保存密码怎么做二级域名查询入口
  • 公司网站建设佛山哪家专业网站开发流程是什么
  • ppt做的好的网站注册商标查询官网入口