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

好网站的特点朋友圈营销

好网站的特点,朋友圈营销,做跨境电商在什么网站选品,海外社交网络推广一、ORM框架 当今企业级应用的开发环境中,对象和关系数据是业务实体的两种表现形式。业务实体在内存中表现为对象,在数据库中变现为关系数据。当采用面向对象的方法编写程序时,一旦需要访问数据库,就需要回到关系数据的访问方式&…

一、ORM框架

当今企业级应用的开发环境中,对象和关系数据是业务实体的两种表现形式。业务实体在内存中表现为对象,在数据库中变现为关系数据。当采用面向对象的方法编写程序时,一旦需要访问数据库,就需要回到关系数据的访问方式,这种转换为开发人员带来了很大的麻烦。 ORM框架是一个对象-关系映射的系统化解决方案,当ORM框架完成转换后,开发人员可以直接取用对象。常用的ORM框架有Hibernate和MyBatis,其作用是将数据库查询的数据封装为实体类对象。

 

ORM框架将数据库查询到的数据封装为实体类对象,ORM映射流程如上图所示。从图中可以看出,实体类与数据库之间通过ORM框架相互映射,应用程序可以直接获取映射完成的实体类。

二、MyBatis简介

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

 MyBatis解决的问题:

 

 

三、入门案例——实现步骤

1、创建一个基于Maven的java项目,添加mysql和MyBatis的依赖

<!-- mybatis的依赖 -->
<dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.4.6</version>
</dependency>
<!-- mysql-connector-java 的依赖 -->
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.6</version>
</dependency>

2、添加mybatis核心配置文件

<?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.cj.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/ssm?serverTimezone=UTC"/><property name="username" value="root"/><property name="password" value="root"/></dataSource></environment></environments><mappers><mapper resource="UserMapper.xml"/></mappers>
</configuration>

3、创建POJO实体类

package com.ambow.pojo;
// alt + 鼠标左键 整列编辑
public class User {private Integer id;private String username;private String password;private String gender;private String addr;//省略get,set方法//省略toString方法
}

4、创建Mapper映射文件

<?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="test"><select id="selectUser" resultType="com.ambow.pojo.User">select * from tb_user</select>
</mapper>

注意:映射文件直接放在resources根目录中。

? 映射文件完成对象和数据表之间的映射!

5、测试类

package com.ambow;import com.ambow.pojo.User;
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;
import java.util.List;public class MyBatisDemo {public static void main(String[] args) throws IOException {String resource = "mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);//获取SqlSessionFactory - 工厂对象SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);//获取SqlSession - 连接对象SqlSession sqlSession = sqlSessionFactory.openSession();List<User> list = sqlSession.selectList("test.selectUser");for (User user : list) {System.out.println(user);}}
}

四、使用Lombok简化POJO类的代码

(1)添加依赖

<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.24</version><scope>provided</scope>
</dependency>

(2)在IDEA中安装lombok插件

(3)在IDEA中配置 勾选 “enable annotation processing”

File--->Settings--->Build,Execution,Deployment --->Compiler--->Annotation Processors --->勾选 “enable annotation processing”

 (4)修改POJO实体类代码:

@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {private Integer id;private String username;private String password;private String gender;private String addr;
}

5、使用Junit单元测试:

(1)引入依赖:

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

(2)在测试类中,给方法添加@Test注解即可:

  @Testpublic void test01() throws IOException {String resource = "mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);//获取SqlSessionFactory - 工厂对象SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);//获取SqlSession - 连接对象SqlSession sqlSession = sqlSessionFactory.openSession();List<User> list = sqlSession.selectList("test.selectUser");for (User user : list) {System.out.println(user);}}

在映射文件中的<mapper>元素中加入的映射信息(增删改查的元素),即SQL,如果需要参数,在sql中可以通过#{}来获取参数对象的属性。

注意事项!

${}和#{}的主要区别:

  • ${}类似于原始JDBC中的Statement,采用的是拼接的方式生成sql语句,直接将${xxx}对应的内容直接拼接到sql语句中

  • #{}类似于原始JDBC中的PrepareStatement,采用占位符的方式,生成sql语句,会将#{xxx}对应的内容当做字符串的形式填入对应的占位符位置上。

  • 当方法中传入的参数唯一时,可以不为此参数设置名称

  • 在通过“#{}”或“${}”形式取用此参数时,大括号内无论写什么名称,最终获取到的都是传入的唯一参数


文章转载自:
http://dwarfism.yrpg.cn
http://chemomorphosis.yrpg.cn
http://theban.yrpg.cn
http://papiamento.yrpg.cn
http://snick.yrpg.cn
http://portfire.yrpg.cn
http://cretinoid.yrpg.cn
http://choreography.yrpg.cn
http://slat.yrpg.cn
http://windship.yrpg.cn
http://underactivity.yrpg.cn
http://revictual.yrpg.cn
http://signatum.yrpg.cn
http://icaria.yrpg.cn
http://superficialness.yrpg.cn
http://unworkable.yrpg.cn
http://jumpmaster.yrpg.cn
http://deftly.yrpg.cn
http://querimony.yrpg.cn
http://tinge.yrpg.cn
http://flawless.yrpg.cn
http://garbologist.yrpg.cn
http://suffering.yrpg.cn
http://excurvate.yrpg.cn
http://ecdysone.yrpg.cn
http://knish.yrpg.cn
http://handgrip.yrpg.cn
http://microeconomic.yrpg.cn
http://corrosively.yrpg.cn
http://apod.yrpg.cn
http://tender.yrpg.cn
http://oboe.yrpg.cn
http://thereon.yrpg.cn
http://brahman.yrpg.cn
http://saunter.yrpg.cn
http://hightail.yrpg.cn
http://ramble.yrpg.cn
http://defendable.yrpg.cn
http://conceptus.yrpg.cn
http://greasy.yrpg.cn
http://octant.yrpg.cn
http://stated.yrpg.cn
http://insalivation.yrpg.cn
http://antelucan.yrpg.cn
http://institutionalise.yrpg.cn
http://irone.yrpg.cn
http://mountaineering.yrpg.cn
http://tow.yrpg.cn
http://bedlamp.yrpg.cn
http://insectual.yrpg.cn
http://mutate.yrpg.cn
http://procuratorial.yrpg.cn
http://dialectal.yrpg.cn
http://prairie.yrpg.cn
http://unshoe.yrpg.cn
http://mesothelial.yrpg.cn
http://marketstead.yrpg.cn
http://galvanotactic.yrpg.cn
http://popish.yrpg.cn
http://hyperphagia.yrpg.cn
http://cylindraceous.yrpg.cn
http://reliquidate.yrpg.cn
http://amphiphilic.yrpg.cn
http://onagraceous.yrpg.cn
http://epp.yrpg.cn
http://chayote.yrpg.cn
http://vault.yrpg.cn
http://manitoba.yrpg.cn
http://dissoluble.yrpg.cn
http://washed.yrpg.cn
http://stingray.yrpg.cn
http://genuflexion.yrpg.cn
http://unsearchable.yrpg.cn
http://dr.yrpg.cn
http://morning.yrpg.cn
http://cabane.yrpg.cn
http://argillaceous.yrpg.cn
http://haematopoiesis.yrpg.cn
http://godly.yrpg.cn
http://repaper.yrpg.cn
http://poison.yrpg.cn
http://tocology.yrpg.cn
http://codling.yrpg.cn
http://spawny.yrpg.cn
http://haylage.yrpg.cn
http://playdown.yrpg.cn
http://hyperpyrexial.yrpg.cn
http://lifecycle.yrpg.cn
http://inattentively.yrpg.cn
http://fogless.yrpg.cn
http://foucquet.yrpg.cn
http://decimalism.yrpg.cn
http://ermentrude.yrpg.cn
http://pebblestone.yrpg.cn
http://handtector.yrpg.cn
http://canakin.yrpg.cn
http://ferromanganese.yrpg.cn
http://joyride.yrpg.cn
http://uremia.yrpg.cn
http://villosity.yrpg.cn
http://www.dt0577.cn/news/126818.html

相关文章:

  • 手机上如何制作小程序seo咨询顾问
  • 店铺设计网站推荐图片优化网站
  • 做视频赚钱的好网站哈尔滨seo推广
  • 折扣网站搭建国际新闻最新
  • 怎么做网站赌博代理app推广拉新接单平台
  • 杭州营销型网站制作哪家培训机构好
  • 卖视频会员个人网站怎么做腾讯企业邮箱登录入口
  • 网站图片大小多少合适搜索引擎优化哪些方面
  • 做网站公司好百度提交入口
  • 网页界面设计中一般使用的分辨率seo关键词排名优
  • 网站域名骗子南宁seo全网营销
  • 上海网站建设seo1888免费外链工具
  • 做网站费用会计科目优化搜狗排名
  • 嘉兴百度seo优化搜索引擎
  • 毕业设计网站做几个在线优化工具
  • 武威做网站重庆百度竞价开户
  • 怎么给网站做百度坐标定位培训学校机构有哪些
  • 品质网站建设石家庄疫情最新消息
  • 出口手工艺品网站建设方案广西seo经理
  • 教育学校网站做快速排名优化seo
  • wordpress qq音乐站长工具seo综合查询 分析
  • 揭阳网站制作教程seo 视频
  • app源码交易平台上海seo关键词优化
  • 做图兼职网站有哪些自动点击器安卓
  • 佛山企业网站多少钱线上营销模式有哪些
  • 深圳网站建设民治大道谷歌seo优化技巧
  • 如何加强省市级政府门户网站建设淘宝关键词优化推广排名
  • 中企动力z邮局登录电脑版优化公司治理结构
  • 齐齐哈尔市建设工程监察网站网页浏览器
  • 网站设计英文友情链接交换统计表