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

godaddy 建网站cpa广告联盟

godaddy 建网站,cpa广告联盟,全国网站直播平台被摧毁,哪个网站的字体做的特别好目录 一、Mybatis 1.1 什么是 MyBatis? 1.2 ORM思想 Hibernate Mybatis(ibatis) 持久层技术对比 二、mybatis基础操作流程 2.1 引入jar包 2.2 mybatis核心配置文件 2.3 java文件和sql文件相分离 2.4 mybatis框架核心类&#xff0c…

目录

一、Mybatis

1.1 什么是 MyBatis?

1.2 ORM思想

Hibernate

Mybatis(ibatis)

持久层技术对比

二、mybatis基础操作流程

2.1 引入jar包

2.2 mybatis核心配置文件

2.3 java文件和sql文件相分离

2.4 mybatis框架核心类,内部执行过程

MyBatis的核心类

内部执行流程

三、mybatis面向接口开发

3.1 先创建javabean对象,与数据库表保持一致

3.2  创建mapper接口,针对类中常见的增删改查方法的接口

3.3根据接口中的方法,在sqlMapper映射文件中写sql语句

3.4 测试类


一、Mybatis

1.1 什么是 MyBatis?

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

MyBatis是

框架:半成品,填充代码

支持自定义sql: 可以写sql语句

1.2 ORM思想

映射: 对象关系映射 ORM Object-Relational-Mapping 解决了java类和mysql数据库表的映射问题。

  • Hibernate

SSH框架 :Spring、Struts2、HIbernate

全自动的ORM框架(不需要写sql)

HIbernateUtil.query(User.class); 查询表中所有数据

HIbernateUtil.query(user); 查询当前对象相关的数据

开发效率高,运行效率低。

@TableName("user")
class User{@Column("id");private Integer id;@Oneprivate Role role;@Manyprivate List<Account> list;
}
  • Mybatis(ibatis)

SSM框架:Spring、Springmvc、Mybatis

半自动的ORM框架(需要写sql语句,但是不需要手动的给参数赋值以及手动的封装结果集)

持久层技术对比

对比维度JDBCHibernateMyBatis
底层/框架底层框架(全自动ORM)框架(半自动ORM)
运行效率最高最低中间
开发效率最低最高中间

二、mybatis基础操作流程

MyBatis中文网

2.1 引入jar包

<dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.17</version>
</dependency>
<dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><scope>runtime</scope>
</dependency>
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional>
</dependency>

2.2 mybatis核心配置文件

数据库环境配置
sqlmapper文件位置

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""https://mybatis.org/dtd/mybatis-3-config.dtd">
<!--配置-->
<configuration><!--引入外部属性配置文件--><properties resource="db.properties"></properties><!--数据库连接环境配置  当前使用的默认环境--><environments default="development"><!--单独的环境 id="环境名 唯一标识"--><environment id="development"><!--事务管理 type="jdbc" 使用jdbc的事务管理机制--><transactionManager type="JDBC"/><!--数据源配置  type="POOLED|UNPOOLED" 使用连接池|不使用连接池--><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><!--多个环境--><environment id="test"><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><!--映射器 指定sqlMapper文件位置--><mappers><mapper resource="mapper/AccountMapper.xml"/></mappers>
</configuration>

2.3 java文件和sql文件相分离

先创建javabean对象,与数据库表保持一致

@Data
public class Account {private int id;private String name;private Double money;
}

sqlMapper映射文件

​​​​​​​<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--命名空间 唯一标识-->
<mapper namespace="com.hl.mybatis01.mapper"><!--id=“sql语句唯一标识” resultType="返回结果集类型"--><select id="findAccount" resultType="com.hl.mybatis01.pojo.Account">select * from account where id = #{id}</select>
</mapper>

2.4 mybatis框架核心类,内部执行过程

  • MyBatis的核心类

  1. 资源加载
    Resources 加载配置文件(如 mybatis-config.xml

  2. 工厂构建
    SqlSessionFactoryBuilder 解析配置,创建单例 SqlSessionFactory

  3. 会话创建
    SqlSessionFactory 为每个数据库操作创建独立的 SqlSession

  4. SQL 执行

    • 直接执行映射语句(已废弃方式)

    • 推荐方式:通过 getMapper() 获取 Mapper 接口代理

  • 内部执行流程

@Test
void query() throws IOException {//1、加载mybatis核心配置文件InputStream in = Resources.getResourceAsStream("mybatis-config.xml");//2、创建SqlSessionFactorySqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);//3、基于工厂获取会话连接SqlSession session = factory.openSession();//4、获取SqlMapper文件//5、执行sql语句   ——45一起执行Account account = session.selectOne("com.hl.mybatis01.mapper.findAccount", 1);System.out.println(account);//6、关闭流程session.close();}

三、mybatis面向接口开发

3.1 先创建javabean对象,与数据库表保持一致

@Data
public class Account {private int id;private String name;private Double money;
}

3.2  创建mapper接口,针对类中常见的增删改查方法的接口

package com.hl.mybatis01.mapper;import com.hl.mybatis01.pojo.Account;import java.util.List;public interface AccountMapper {
//    根据id查询单个账户Account findAccount(int id);
//    查询所有的账户List<Account> findAllAccount();
//更新一个账户  根据id更余额int updateAccount(Account account);
//    删除一个用户int deleteAccount(int id);
//    新增一个账户int insertAccount(Account account);}

3.3根据接口中的方法,在sqlMapper映射文件中写sql语句

其中的映射关系

  • 命名空间=接口全路径
  • sql的id=接口里面的方法名
  • resultType返回结果类型和方法的返回值类型一致
<?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.hl.mybatis01.mapper.AccountMapper">
<!--    写sql语句  id="sql语句的唯一标识"   resultType="返回结果集类型"--><select id="findAccount" resultType="com.hl.mybatis01.pojo.Account">select * from account where id = #{id}</select><!--    //    查询所有的账户-->
<!--    List<Account> findAllAccounts();--><select id="findAllAccount" resultType="com.hl.mybatis01.pojo.Account">select * from account</select>
<!--    //更新一个账户  根据id更余额--><!--    int updateAccount(Account account);--><update id="updateAccount" >update account set money= #{money} where id = #{id}</update><!--    //    删除一个用户-->
<!--    int deleteAccount(int id);--><delete id="deleteAccount">delete from account where id = #{id}</delete>
<!--    //    新增一个账户-->
<!--    int insertAccount(Account account);--><insert id="insertAccount">insert into account (name, money) values (#{name}, #{money})</insert></mapper>

3.4 测试类

package com.hl.mybatis01;import com.hl.mybatis01.mapper.AccountMapper;
import com.hl.mybatis01.pojo.Account;
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.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;import javax.annotation.Resource;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;//@SpringBootTest
class MyBatis01ApplicationTests {
/*
MyBatis的核心类
Resources类
SqlSessionFactoryBuilder工厂建造者类
SqlSessionFactory工厂类
SqlSession会话*/@Testvoid query() throws IOException {
//        1、加载mybatis核心配置文件InputStream in=Resources.getResourceAsStream("mybatis-config.xml");
//        2、创建SqlSessionFactory工厂SqlSessionFactory factory= new SqlSessionFactoryBuilder().build(in);
//        3、基于工厂获取会话连接SqlSession session=factory.openSession();
//        4、获取SqlMapper文件   引号是sql语句的唯一标识=命名空间的唯一标识加sql语句的id
//        先获取接口文件,找到接口对象AccountMapper accountMapper = session.getMapper(AccountMapper.class);
//        5、执行sql语句
//        执行sql语句,得到account对象
//查询按id查询单个账户Account account = accountMapper.findAccount(1);System.out.println(account);
//查询全部List<Account> list = accountMapper.findAllAccount();System.out.println(list);//修改Account account1 = new Account();account1.setId(1);account1.setMoney(23450.0);int num = accountMapper.updateAccount(account1);System.out.println("更新的数据条数:" + num);
//新增Account account2 = new Account();account2.setName("王五");account2.setMoney(1000.0);int num2 = accountMapper.insertAccount(account2);System.out.println("插入的数据条数:" + num2);
//删除int num3 = accountMapper.deleteAccount(4);System.out.println("删除的数据条数:" + num3);//        !!!提交事务,如果不提交事务,数据不会更新到数据库,只针对增删改有效,产讯无效session.commit();//        6、关闭流程session.close();}}


文章转载自:

http://DYIzPvDk.fhqdb.cn
http://ur1anjk6.fhqdb.cn
http://Ghh6xdmQ.fhqdb.cn
http://MymF7Xrd.fhqdb.cn
http://0ZPq2KAR.fhqdb.cn
http://ju5cRj3s.fhqdb.cn
http://NslkvgdC.fhqdb.cn
http://Pi34A0TR.fhqdb.cn
http://9n2hhVWC.fhqdb.cn
http://0eVOPr4X.fhqdb.cn
http://1FWKsqG4.fhqdb.cn
http://ml8gDOpR.fhqdb.cn
http://0QEdKtgK.fhqdb.cn
http://kEmEpeUm.fhqdb.cn
http://fBR4SPz2.fhqdb.cn
http://SFnMeR6V.fhqdb.cn
http://z93BeStV.fhqdb.cn
http://1e4dOZjN.fhqdb.cn
http://MnwMXMbA.fhqdb.cn
http://B5OxYIQZ.fhqdb.cn
http://LOns6Oup.fhqdb.cn
http://5uyQfwXE.fhqdb.cn
http://IbiDbQRx.fhqdb.cn
http://s7njF3AZ.fhqdb.cn
http://NpyAQ3ho.fhqdb.cn
http://ZL9SOHWO.fhqdb.cn
http://JjQVf6Uz.fhqdb.cn
http://gUJRDH6G.fhqdb.cn
http://q8xclshd.fhqdb.cn
http://wNWjiDEB.fhqdb.cn
http://www.dtcms.com/wzjs/720820.html

相关文章:

  • 如何让做的网站自动适应浏览器天津门户网站开发
  • 中小企业建站宏基陆通工程建设有限公司网站
  • 苏州网站设计公司排名重庆网站推广网络推广
  • 延庆手机网站建设wordpress去版权 合法
  • 南山网站 建设seo信科网站域名怎么写好
  • 北京网站开发网站建设百度竞价排名又叫什么
  • 科技布广告优化
  • 网站优化入门韩国 网站 域名
  • 做推广适合哪些网站吗做一个营销型网站多少钱
  • 网站建设论文1000字discuz网站建设
  • 网站开发实用吗帮我们公司做网站
  • 电子商务网站建设服务外包网络推广发展
  • 公司设计一个网站建网站的流程和费用
  • 开发网站需要多少资金贵州域网网站建设
  • 装修网站vr全景图怎么做高密专业网站建设价格
  • 网站的设计思路各种网站
  • 做网站不懂行情 怎么收费网络营销的主要特点有哪些
  • 没有备案的网站会怎么样吸引客流的25个技巧
  • 连云港做网站最好平台制作网站公司
  • 山西住房城乡建设部网站重庆网站排名外包
  • 泰州网站制作计划设计公司和企业的区别
  • 做玄幻封面素材网站网站首页设计效果图
  • 南京公司网站建设怎么收费外省公司做网站备案
  • 建站之星官网登陆福田网站建设运营费用
  • 国内各大网站盐城网站建设公司
  • 东莞建站公司天猫运营培训
  • 外贸建站seo优化旅行社服务网点能否做网站
  • 北郊网站建设公司网站开发就业外部威胁
  • 莱州双语网站传奇类游戏网站
  • wordpress文章图seo推广专员招聘