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

北京建委安全员c证/seo网站优化排名

北京建委安全员c证,seo网站优化排名,贵阳做网站seo,口碑好网站制作公司哪家好文章目录一、前调:充分了解一下Mybatis一、1 什么是MyBatis二、2 解释:持久化三、3 解释:持久层(dao,mapper)四、4 为什么需要Mybatis五、5 Mybatis的优点二、小试牛刀:第一个Mybatis程序1、准备…

文章目录

    • 一、前调:充分了解一下Mybatis
      • 一、1 什么是MyBatis
      • 二、2 解释:持久化
      • 三、3 解释:持久层(dao,mapper)
      • 四、4 为什么需要Mybatis
      • 五、5 Mybatis的优点
    • 二、小试牛刀:第一个Mybatis程序
      • 1、准备工作
      • 2、搭建实验数据库
      • 3、导入Mybatis相关的jar包
      • 4、编写核心配置文件(可以参照官方帮助文档)
      • 5、编写MyBatisUtils工具类
      • 6、创建对应的JavaBean和dao层的接口
      • 7、编写Mapper.xml配置文件(相当于DaoImpl.java)
      • 8、测试类
      • 9、对于可能出现的问题解决方案
        • 1、Maven静态资源过滤问题:找不到对应的配置文件等等问题
        • 2、暂不支持发行版本5的解决方案
        • 3、我们的Mpper.xml没有到Mybatis的核心配置文件中注册

一、前调:充分了解一下Mybatis

一、1 什么是MyBatis

  • mybatis是一款优秀的持久层的框架,他支持自定义Sql 存储过程以及高级映射
  • Mybatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集的过程
  • MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 实体类 【Plain Old Java Objects,普通的 Java对象】映射成数据库中的记录。
  • Mybatis官方文档 : http://www.mybatis.org/mybatis-3/zh/index.html
  • GitHub : https://github.com/mybatis/mybatis-3

二、2 解释:持久化

**持久化是将程序数据在持久状态和瞬时状态间转换的机制。**把瞬时状态转换为持久状态,可断电,把内存中的数据持久化处理

  • 即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的对象存储在数据库中,或者存储在磁盘文件中、XML数据文件中等等。
  • JDBC就是一种持久化机制。文件IO也是一种持久化机制。

但是我们为啥需要持久化?,因为内存的数据不可断电,断电后内存中数据就会丢失,我们无法保证数据不会丢失,不会断电,等等,还有就是内存的性价比不高

三、3 解释:持久层(dao,mapper)

就是javaWeb基础阶段使用过的dao层,与数据打交道的那一层,

DAO( data access Object 数据访问对象)

大多数情况下特别是企业级应用,数据持久化往往也就意味着将内存中的数据保存到磁盘上加以固化,而持久化的实现过程则大多通过各种关系数据库来完成

四、4 为什么需要Mybatis

  • 我认为很简单,就是因为当我们使用来哦Mybatis框架之后,我们可以省去很多不必要的操作,我们可以更加简便的和数据库打交道,提高了我们的开发效率,与稳定性
  • 传统的jdbc操作 , 有很多重复代码块 .比如 : 数据取出时的封装 , 数据库的建立连接等等… , 通过框架可以减少重复代码,提高开发效率 .
  • Mybatis是一个半自动化的ORM框架(ORM 对象关系映射,数据的一张表对应java的一个bean)
  • 即使我们不使用Mybatis我们依然可以做到所有的事,而是使用了只不过是方便了我们,解放了我们的双手,可以提高我们的开发效率

五、5 Mybatis的优点

  • 首先肯定是简单易学,没有第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件就可以了,易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。
  • 灵活:mybatis不会对应用程序或者数据库的现有设计强加任何影响。sql写在xml里,便于统一管理和优化。通过sql语句可以满足操作数据库的所有需求。
  • **解除sql与程序代码的耦合:**通过提供DAO层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。
  • 提供xml标签,支持编写动态sql。

二、小试牛刀:第一个Mybatis程序

1、准备工作

  • 搭建环境

  • 导入Mybatis相关依赖在prom.xml

  • 编写代码 {

    1. 创建数据库,以及对应的表信息
    2. ORM 创建对应的Javabean,以及Dao层,对应dao接口
    3. 编写Mybatis的核心配置文件
    4. 编写对应的接口的Mapper.xml
    5. 运行测试

    }

  • 测试

2、搭建实验数据库

CREATE DATABASE `mybatis`;USE `mybatis`;DROP TABLE IF EXISTS `user`;CREATE TABLE `user` (
`id` int(20) NOT NULL,
`name` varchar(30) DEFAULT NULL,
`pwd` varchar(30) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

3、导入Mybatis相关的jar包

<!--配置依赖-->
<dependencies><!--导入mysql驱动--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.47</version></dependency><!--导入junit--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version></dependency><!--导入Mybatis--><!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.2</version></dependency>
</dependencies>

4、编写核心配置文件(可以参照官方帮助文档)

直接从

复制过来

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//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="${driver}"/><property name="url" value="${url}"/><property name="username" value="${username}"/><property name="password" value="${password}"/></dataSource></environment></environments><mappers><mapper resource="org/mybatis/example/BlogMapper.xml"/></mappers>
</configuration>

5、编写MyBatisUtils工具类

主要作用是加载配置文件,返回SqlSession(简介的相当于我们JDBC的connection)

package com.atdk.utils;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;/*** SqlSessionFactory-->sqlSession*/
public class MybatisUtils {private static SqlSessionFactory sqlSessionFactory;/*** 使用Mybatis的第一步操作,加载配置文件,获取SqlSessionFactory对象* 这一串代码是写死的*/static {String resource = "mybatis-config.xml";InputStream inputStream = null;try {inputStream = Resources.getResourceAsStream(resource);} catch (IOException e) {e.printStackTrace();}sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);}/*** 既然有了 SqlSessionFactory,顾名思义,我们可以从中获得 SqlSession 的实例。* SqlSession 提供了在数据库执行 SQL 命令所需的所有方法。* 你可以通过 SqlSession 实例来直接执行已映射的 SQL 语句** @return 返回一个sqlSession对象*/public static SqlSession getSqlSession() {SqlSession sqlSession = sqlSessionFactory.openSession();return sqlSession;}
}

6、创建对应的JavaBean和dao层的接口

User.java

public class User {private int id;private String name;private String pwd;public User() {}}

UserMapper.java (因为我们现在使用了Mybatis框架,按照规定 我们使用Mapper代替dao 做后缀修饰dao层的接口 为了规范)

package com.atdk.dao;import com.atdk.pojo.User;import java.util.List;
import java.util.Map;public interface UserMapper {/*** 获取所有用户信息** @return 所有用户信息*/List<User> getUserList();
}

7、编写Mapper.xml配置文件(相当于DaoImpl.java)

Mapper.xml替代了接口的实现类

命名空间属性namespace的作用有两个:

  • 一个是利用更长的全限定名来将不同的语句隔离开来,同时也实现了你上面见到的接口绑定。就算你觉得暂时用不到接口绑定,你也应该遵循这里的规定,以防哪天你改变了主意。

  • 长远来看,只要将命名空间置于合适的 Java 包命名空间之中,你的代码会变得更加整洁,也有利于你更方便地使用 MyBatis。

<?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属性 绑定一个Dao对应的接口,替代UserDaoImpl-->
<mapper namespace="com.atdk.dao.UserMapper"><!--select查询语句 id为UserDao的方法名字,一定要一样,resultType:为返回的类型--><select id="getUserList" resultType="com.atdk.pojo.User">select * from mybatis.user;</select>
</mapper>

8、测试类

官方建议我们使用try-catch-finally 关闭资源

@Test
public void test() {SqlSession sqlSession = null;try {//1、获取SqlSession对象sqlSession = MybatisUtils.getSqlSession();//方式一:getMapper() 推荐//1、获取UserDao实现类对象(Mapper.xml替代了Impl实现类)UserMapper userDao = sqlSession.getMapper(UserMapper.class);//2、调用方法List<User> users = userDao.getUserList();//方式二:selectList()过时了,还需要强转,不推荐使用//List<User> list = sqlSession.selectList("com.atdk.dao.UserMapper");for (User user : users) {System.out.println(user);}} catch (Exception e) {e.printStackTrace();} finally {sqlSession.close();}
}

9、对于可能出现的问题解决方案

1、Maven静态资源过滤问题:找不到对应的配置文件等等问题

<!--配置资源过滤解决方案-->
<build><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>
</build>

2、暂不支持发行版本5的解决方案

在pom.xml文件中指定对应使用的JDK版本号

<!--指定JDK的版本号-->
<properties><java.version>11</java.version><maven.compiler.source>${java.version}</maven.compiler.source><maven.compiler.target>${java.version}</maven.compiler.target>
</properties>

3、我们的Mpper.xml没有到Mybatis的核心配置文件中注册

解决方案,那就注册呗

  <!--每一个Mapper.xml配置文件都需要在Mybatis的核心配置文件中注册“.”,改成“/”--><mappers><!--使用resource属性指定:Mapper配置文件路径,resource路径需要使用/--><mapper resource="com/atdk/dao/UserMapper.xml"/></mappers>
http://www.lbrq.cn/news/215623.html

相关文章:

  • 网站更新步骤/厦门网络推广哪家强
  • 宁晋网站开发/推荐6个免费国外自媒体平台
  • 乐清做网站建设/夜狼seo
  • 深圳做app网站建设/信息流广告优秀案例
  • 网站建设公司好做吗/雅虎日本新闻
  • 适合ps做图的素材网站有哪些/百度推广注册
  • 手机开发公司/seo在线培训
  • 网站建设案例效果/竞价推广代运营服务
  • 长沙做网站要微联讯点很好/海外网络推广服务
  • 怎么做免费的网站链接/交换友情链接平台
  • 企业网站建设怎么做/网站收录情况查询
  • 电子商务网站建设规划书的内容/百度建站云南服务中心
  • 网站建设公司如何进行工作/seo学院
  • 物流网站的建设论文一万字/千锋教育可靠吗
  • 做淘宝有哪些货源网站/免费的网站域名查询
  • 详细的网站规划建设方案服务器/网站关键词优化排名怎么做
  • 营销型网站(易网拓)/深圳seo优化排名公司
  • 网站开发报价合同范本/seo搜索引擎优化试题及答案
  • 有哪些建设网站公司/某网站seo策划方案
  • app线上推广是什么工作/长沙seo推广优化
  • 网站上海网站建设/缅甸最新新闻
  • wordpress编辑功能/seo优化效果怎么样
  • wordpress前台上传图片/图片优化软件
  • 两学一做微网站交流/世界搜索引擎大全
  • 给图像做标注的网站/网站优化建议
  • 今天开始做魔王免费观看网站/中央新闻频道直播今天
  • wp做网站需要多久/网站seo系统
  • 广州做网站要多少钱/百度推广登陆
  • 做暖漫画网站/营业推广促销
  • 兰州企业网站建设哪家好/黑锋网seo
  • C# StringBuilder源码分析
  • 3-Nodejs-使用fs文件系统模块
  • PostgreSQL 数据库中 ETL 操作的实战技巧
  • 网络编程(TCP连接)
  • Elasticsearch 9.x 升级变化
  • leetGPU解题笔记(2)