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

南山区住房与建设局官方网站新媒体运营培训班

南山区住房与建设局官方网站,新媒体运营培训班,社区电商小程序,醴陵建设局网站文章目录1.ORM2. 数据库表3. 入门程序3.1 创建项目3.2 开发3.3 一个比较完整规格的mybatis程序3.4 测试案例 junit3.5 对第一个mybatis使用junit测试3.6 集成日志框架logback3.7mybatis工具类编写1.ORM Object(JVM中的Java对象) Relational(关系型数据库) Mapping(映射) mybat…

文章目录

  • 1.ORM
  • 2. 数据库表
  • 3. 入门程序
    • 3.1 创建项目
    • 3.2 开发
    • 3.3 一个比较完整规格的mybatis程序
    • 3.4 测试案例 junit
    • 3.5 对第一个mybatis使用junit测试
    • 3.6 集成日志框架logback
    • 3.7mybatis工具类编写

1.ORM

Object(JVM中的Java对象)
Relational(关系型数据库)
Mapping(映射)

在这里插入图片描述

  • mybatis是一个半自动化的ORM,可以将数据库中的一条记录映射到一个Java对象,但是sql语句要自己写,所有说是半自动化。
  • Hibernate是一个全自动化的ORM,不用自己写sql语句。

2. 数据库表

DROP TABLE IF EXISTS `t_car`;
CREATE TABLE `t_car`  (`id` bigint(20) NOT NULL COMMENT '自然主键',`car_num` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '汽车编号',`brand` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '汽车品牌',`guide_price` decimal(10, 2) NULL DEFAULT NULL COMMENT '厂商指导价',`produce_time` char(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '生产日期',`car_type` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '汽车类型,燃油车 新能源 氢能源',PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;SET FOREIGN_KEY_CHECKS = 1;

在这里插入图片描述

3. 入门程序

3.1 创建项目

(1)创建一个名为mybatis的空Project
在这里插入图片描述
(2)修改使用JDK17
在这里插入图片描述
(3)修改指向自己下载的maven3.8.8

在这里插入图片描述

3.2 开发

(1)新建maven模块

在这里插入图片描述
(2)resources
放到这个包下面的一般是配置文件,资源,直接放到这里等同于放到类的根目录之下。
在这里插入图片描述
(3)指定打包方式

<packaging>jar</packaging>

(4)引入依赖

	<dependencies><!-- mybatis依赖 --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.10</version></dependency><!-- mysql依赖 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.37</version></dependency></dependencies>

(5)编写mybatis核心配置文件:mybatis-config.xml

官网例子:
在这里插入图片描述

(6)编写XxxxMapper.xml文件
官网例子:
在这里插入图片描述

(7)在mybatis-config.xml文件中指定XxxxMapper.xml文件的路径

<!--执行XxxxMapper.xml文件的路径-->
<!--resource属性会自动从类的根路径下开始查找资源-->
<mapper resource="CarMapper.xml"/>

(8)编写MyBatis程序。

在这里插入图片描述

(9)mybatis的事务管理

* 在mybatis-config.xml文件中,可以通过以下的配置进行mybatis的事务管理<transactionManager type="JDBC"/>
* type属性的值包括两个:JDBC(jdbc)MANAGED(managed)type后面的值,只有以上两个值可选,不区分大小写。
* 在mybatis中提供了两种事务管理机制:第一种:JDBC事务管理器第二种:MANAGED事务管理器
* JDBC事务管理器:mybatis框架自己管理事务,自己采用原生的JDBC代码去管理事务:conn.setAutoCommit(false); 开启事务。....业务处理...conn.commit(); 手动提交事务使用JDBC事务管理器的话,底层创建的事务管理器对象:JdbcTransaction对象。如果你编写的代码是下面的代码:SqlSession sqlSession = sqlSessionFactory.openSession(true);表示没有开启事务。因为这种方式压根不会执行:conn.setAutoCommit(false);在JDBC事务中,没有执行conn.setAutoCommit(false);那么autoCommit就是true。如果autoCommit是true,就表示没有开启事务。只要执行任意一条DML语句就提交一次。* MANAGED事务管理器:mybatis不再负责事务的管理了。事务管理交给其它容器来负责。例如:spring。我不管事务了,你来负责吧。对于我们当前的单纯的只有mybatis的情况下,如果配置为:MANAGED那么事务这块是没人管的。没有人管理事务表示事务压根没有开启。没有人管理事务就是没有事务。* JDBC中的事务:如果你没有在JDBC代码中执行:conn.setAutoCommit(false);的话,默认的autoCommit是true。* 重点:以后注意了,只要你的autoCommit是true,就表示没有开启事务。只有你的autoCommit是false的时候,就表示开启了事务。

(10)小结
在这里插入图片描述

MyBatisIntroductionTest.java

package com.sdnu.mybatis.test;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.FileInputStream;
import java.io.InputStream;public class MyBatisIntroductionTest {public static void main(String[] args) throws Exception{//获取SqlSessionFactoryBuilder对象SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();//获取SqlSessionFactory对象//Resources.getResourceAsStream默认就是从类的根路径下开始查找资源//一般情况下,一个数据库对应一个SqlSessionFactory对象InputStream is = Resources.getResourceAsStream("mybatis-config.xml");SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);//获取SqlSession对象SqlSession sqlSession = sqlSessionFactory.openSession();//执行SQL语句// 返回值是影响数据库表中的记录条数int count = sqlSession.insert("insertCar");System.out.println("插入了几条记录?" + count);//手动提交sqlSession.commit();}
}

mybatis-config.xml

<?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="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/sdnu"/><property name="username" value="root"/><property name="password" value="root"/></dataSource></environment></environments><mappers><!--执行XxxxMapper.xml文件的路径--><!--resource属性会自动从类的根路径下开始查找资源--><mapper resource="CarMapper.xml"/></mappers>
</configuration>

CarMapper.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="sdkskkdkd"><insert id="insertCar">insert into t_car(id, car_num, brand, guide_price, produce_time, car_type)values (null, '1003', '丰田霸道', 30.00, '2000-10-11', '燃油车')</insert>
</mapper>

3.3 一个比较完整规格的mybatis程序

package com.sdnu.mybatis.test;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;/*** 采用正规的方式写Mybatis*/
public class MyBatisCompleteTest {public static void main(String[] args) {SqlSession sqlSession = null;try {SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(Resources.getResourceAsStream("mybatis-config.xml"));//开启会话,底层开启事务sqlSession = sqlSessionFactory.openSession();//执行sql语句,处理相关业务int count = sqlSession.insert("insertCar");System.out.println(count);//执行到这里,没有发送异常,提交事务sqlSession.commit();} catch (Exception e) {if(sqlSession != null){sqlSession.rollback();}e.printStackTrace();} finally {if(sqlSession != null){sqlSession.close();}}}
}

3.4 测试案例 junit

加入junit依赖

    <dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version><scope>test</scope></dependency></dependencies>

要测试的类

package com.sdnu.junit.service;public class MathService {public int sum(int a, int b){return a + b;}public int sub(int a, int b){return a - b;}
}

测试方法:

package com.sdnu.junit.service;import org.junit.Assert;
import org.junit.Test;public class MathServiceTest {@Testpublic void sum(){//单元测试有两个重要的方法//一个是实际值(被测试方法真正执行的结果),一个是期望值(期望得到的结果)MathService mathService = new MathService();//实际值int actual = mathService.sum(1, 2);//期望值int expected = 33;//加断言测试结果Assert.assertEquals(expected, actual);}@Testpublic void sub(){MathService mathService = new MathService();int actual = mathService.sub(10, 5);int expected = 5;Assert.assertEquals(expected, actual);}
}

在这里插入图片描述

3.5 对第一个mybatis使用junit测试

添加依赖

        <dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version><scope>test</scope></dependency>

测试程序

package com.sdnu.mybatis.test;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 org.junit.Test;public class CarMapperTest {@Testpublic void testInsertCar(){SqlSession sqlSession = null;try {SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(Resources.getResourceAsStream("mybatis-config.xml"));//开启会话,底层开启事务sqlSession = sqlSessionFactory.openSession();//执行sql语句,处理相关业务int count = sqlSession.insert("insertCar");System.out.println(count);//执行到这里,没有发送异常,提交事务sqlSession.commit();} catch (Exception e) {if(sqlSession != null){sqlSession.rollback();}e.printStackTrace();} finally {if(sqlSession != null){sqlSession.close();}}}
}

3.6 集成日志框架logback

在这里插入图片描述

logback日志框架实现了slf4j标准。(沙拉风:日志门面。日志标准。)第一步:引入logback的依赖。<dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.2.11</version></dependency>第二步:引入logback所必须的xml配置文件。这个配置文件的名字必须叫做:logback.xml或者logback-test.xml,不能是其它的名字。这个配置文件必须放到类的根路径下。不能是其他位置。主要配置日志输出相关的级别以及日志具体的格式。

3.7mybatis工具类编写

SqlSessionUtil.java

package com.sdnu.mybatis.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;/*** mybatis工具类*/
public class SqlSessionUtil {//工具类的构造方法一般是是私有化的//工具类的一般方法一般是静态方法private static SqlSessionFactory sqlSessionFactory;private SqlSessionUtil(){}static {try {sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis-config.xml"));} catch (IOException e) {throw new RuntimeException(e);}}public static SqlSession openSession(){return sqlSessionFactory.openSession();}
}

测试

    @Testpublic void testInsertCarByUtil(){SqlSession sqlSession = SqlSessionUtil.openSession();int count = sqlSession.insert("insertCar");System.out.println(count);sqlSession.commit();sqlSession.close();}
http://www.mmbaike.com/news/98945.html

相关文章:

  • django完整网站开发推广文案怎么写
  • wordpress 图片并排seo服务外包
  • 哪个网站做图片外链百度在线客服系统
  • 网站icp备案查不到百度推广联系人
  • 网站功能模块报价seo优化是怎么回事呢
  • 公司创建网站要多少钱杭州网站设计公司
  • go网站开发百度大搜数据多少钱一条
  • 网站服务公司案例网络营销推广方案ppt
  • 开封网站开发新闻头条今日要闻10条
  • 连云港建设厅官方网站seo自动工具
  • 网易网站建设的目的qq群引流推广平台
  • 网站建设合作流程图优化网站软文
  • 网站建设web前端开发入门如何做好网络推广
  • 四川建设集团有限公司网站市场营销比较好写的论文题目
  • 网站设计如何在ps先做免费源码资源源码站
  • 湖北专业网站建设口碑好电商网站有哪些
  • 营销型企业网站核心南京百度seo排名
  • 海外做bt种子网站郑州seo使用教程
  • 提供微信网站建设游戏推广代理平台
  • 05网数学书答案seo引擎搜索网站关键词
  • 做电商能赚钱吗怎么去优化关键词
  • 网站建设卖东西看seo
  • 高创园网站建设方案seo关键词优化价格
  • 临沂企业做网站排行榜百度
  • 做视频网站 带宽多少才合适产品网络营销分析
  • 东莞企业营销型网站建设自媒体135免费版下载
  • 大型网站怎么做seo什么是网店推广
  • 建设龙卡e付卡网站seo网站优化培训公司
  • 做特卖的网站有哪些代运营公司排名
  • 那家网站做照片书好论坛如何做seo