日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

通过接口操作MyBatis及数据库配置文件

發(fā)布時間:2024/9/27 数据库 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 通过接口操作MyBatis及数据库配置文件 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

優(yōu)點:

  • 不用每次實例化SqlSession
  • 配置優(yōu)于硬編碼
  • 減少sql書寫錯誤的概率
  • 規(guī)范代碼,面向接口服務(wù)
  • 文章目錄

            • 一、回顧
            • 二、如何通過接口操作MyBatis
              • 2.1. 文件結(jié)構(gòu)
              • 2.2. 依賴jar包
              • 2.3. 表結(jié)構(gòu)
              • 2.4. mybatis配置文件
              • 2.5. db配置文件
              • 2.6. 獲取SqlSession工具類
              • 2.7. 基礎(chǔ)常量類
              • 2.8. 增刪改查案例
              • 2.9. 基礎(chǔ)文件
              • 2.10. 源碼地址

    一、回顧

    為什么要通過接口操作MyBatis?
    在以往的情況下,我們通過MyBatis操作數(shù)據(jù)庫,每執(zhí)行一條SQL語句就要實例化一個SqlSession,并且要調(diào)用相應(yīng)的SQL映射文件信息。比如:

    String statement = "com.gblfy.datatrans.mapper.HeroMapper.selectHeroList";


    操作有點麻煩,所以我們采用接口的形式,通過約定,進行更為簡單的操作。
    有一句話特別重要:約定優(yōu)于配置,配置優(yōu)于硬編碼。

    二、如何通過接口操作MyBatis
    2.1. 文件結(jié)構(gòu)

    2.2. 依賴jar包
    mybatis-3.5.6.jar mysql-connector-java-5.1.45.jar ojdbc6.jar
    2.3. 表結(jié)構(gòu)

    oracle 初始化表結(jié)構(gòu)

    -- CREATE TABLE DROP TABLE HERO; CREATE TABLE HERO ( SNO VARCHAR2(20) NOT NULL, USER_NAME VARCHAR2(20), AGE NUMBER(3), PRIMARY KEY (SNO) );--COMMENT EXPLAIN 字段說明 COMMENT ON TABLE HERO IS '英雄信息表'; COMMENT ON COLUMN HERO.SNO IS '英雄編碼'; COMMENT ON COLUMN HERO.USER_NAME IS '英雄名稱'; COMMENT ON COLUMN HERO.AGE IS '英雄年齡';insert into HERO (SNO, USER_NAME, AGE) values ('1', '蓋倫', '1'); insert into HERO (SNO, USER_NAME, AGE) values ('2', '小丑', '1'); insert into HERO (SNO, USER_NAME, AGE) values ('3', '莫甘娜', '1'); insert into HERO (SNO, USER_NAME, AGE) values ('4', '寒冰', '1'); insert into HERO (SNO, USER_NAME, AGE) values ('5', '劍圣', '5'); insert into HERO (SNO, USER_NAME, AGE) values ('6', '劍圣', '1');

    mysql 初始化表結(jié)構(gòu)

    DROP TABLE hero; CREATE TABLE `hero` (`sno` bigint(20) not null comment '英雄編碼',`user_name` varchar(50) NOT NULL COMMENT '英雄名稱',`age` varchar(3) COLLATE utf8_bin NOT NULL COMMENT '英雄年齡',PRIMARY KEY (`sno`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin ROW_FORMAT=DYNAMIC COMMENT='英雄信息表';insert into fis_hero (SNO, USER_NAME, AGE) values ('1', '蓋倫', '1'); insert into fis_hero (SNO, USER_NAME, AGE) values ('2', '小丑', '1'); insert into fis_hero (SNO, USER_NAME, AGE) values ('3', '莫甘娜', '1'); insert into fis_hero (SNO, USER_NAME, AGE) values ('4', '寒冰', '1'); insert into fis_hero (SNO, USER_NAME, AGE) values ('5', '劍圣', '5'); insert into fis_hero (SNO, USER_NAME, AGE) values ('6', '劍圣', '1');
    2.4. 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><!--引入外部properties文件 --><properties resource="com/gblfy/datatrans/conf/db.properties"></properties><!--和Spring整合后 environments 配置將廢除 --><environments default="development"><environment id="development"><!--使用JDBC事務(wù)管理 --><transactionManager type="JDBC"/><!--數(shù)據(jù)庫連接池 --><dataSource type="POOLED"><property name="driver" value="${jdbc.driverClass}"/><property name="url" value="${jdbc.url}"/><property name="username" value="${jdbc.username}"/><property name="password" value="${jdbc.password}"/></dataSource></environment></environments><!--加載xml文件 --><mappers><mapper resource="com/gblfy/datatrans/mapper/mapping/HeroMapper.xml"/></mappers> </configuration>
    2.5. db配置文件
    #Oracle 數(shù)據(jù)庫驅(qū)動 jdbc.driverClass=oracle.jdbc.driver.OracleDriver jdbc.url=jdbc:oracle:thin:@IP地址:端口:數(shù)據(jù)庫名稱 jdbc.username=用戶名 jdbc.password=密碼##Mysql數(shù)據(jù)庫驅(qū)動 <= 5.x版本 #jdbc.driverClass=com.mysql.jdbc.Driver #jdbc.url=jdbc:mysql://IP地址:端口/數(shù)據(jù)庫名稱?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=CTT #jdbc.username=用戶名 #jdbc.password=密碼 # ##Mysql數(shù)據(jù)庫驅(qū)動 6.x及以上版本 #jdbc.driverClass=com.mysql.cj.jdbc.Driver #jdbc.url=jdbc:mysql://IP地址:端口/數(shù)據(jù)庫名稱?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=CTT #jdbc.username=用戶名 #jdbc.password=密碼
    2.6. 獲取SqlSession工具類
    package com.gblfy.datatrans.util;import com.gblfy.datatrans.consts.BaseConst; 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;/*** 獲取SqlSession** @author gblfy* @date 2020-12-18*/ public class SqlSessionUtils {/*** 獲取SqlSession** @return* @throws IOException*/public static SqlSession getSqlSession() throws IOException {//mybatis的配置文件String resource = BaseConst.MYBATIS_CONF;//使用類加載器加載mybatis的配置文件(它也加載關(guān)聯(lián)的映射文件)InputStream is = Resources.getResourceAsStream(resource);//構(gòu)建sqlSession的工廠SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);return sessionFactory.openSession();} }
    2.7. 基礎(chǔ)常量類
    package com.gblfy.datatrans.consts;/*** 獲取SqlSession** @author gblfy* @date 2020-12-18*/ public class BaseConst {public static final String MYBATIS_CONF = "com/gblfy/datatrans/conf/mybatis-conf.xml"; }
    2.8. 增刪改查案例

    package com.gblfy.datatrans.controller;import com.gblfy.datatrans.mapper.HeroMapper; import com.gblfy.datatrans.pojo.Hero; import com.gblfy.datatrans.pojo.HeroExample; import com.gblfy.datatrans.util.SqlSessionUtils; import org.apache.ibatis.session.SqlSession;import java.io.IOException; import java.util.List;/*** @author gblfy* @ClassNme test* @Description TODO* @Date 2020/12/16 14:41* @version1.0*/ public class TestMybatis {// 測試mybatis數(shù)據(jù)庫public static void main(String[] args) throws IOException {TestMybatis m = new TestMybatis();//1.添加新英雄// FisHero hero = new FisHero();// hero.setSno("3");// hero.setUserName("劍圣");// hero.setAge((short) 1);// m.addHero(hero);// //2.查詢英雄列表 支持多條件查詢m.selectHeroList();// FisHero hero2 = new FisHero();// hero2.setUserName("劍圣");// m.selectHeroListByname(hero2);////3.查詢英雄編碼查詢指定英雄信息// String sno = "1";// m.selectHeroBySno(sno);////4.更新英雄信息// FisHero hero3 = new FisHero();// hero3.setSno("1");// hero3.setUserName("雨昕2");// hero3.setAge((short) 1);// m.updateHero(hero3);//////5.刪除指定英雄信息// String sno = "1";// m.deleteHeroBySno(sno);}/*** 查詢英雄列表*/public void selectHeroList() {SqlSession session = null;try {session = SqlSessionUtils.getSqlSession();HeroMapper heroMapper = session.getMapper(HeroMapper.class);List<Hero> heroList = heroMapper.selectByExample(null);for (Hero hero : heroList) {System.out.println("英雄列表:" + hero);}session.commit();//提交事務(wù)} catch (IOException e) {e.printStackTrace();session.rollback();} finally {session.close();}}/*** 根據(jù)英雄名稱查詢英雄列表** @param hero*/public void selectHeroListByname(Hero hero) {SqlSession session = null;try {session = SqlSessionUtils.getSqlSession();HeroMapper heroMapper = session.getMapper(HeroMapper.class);HeroExample example = new HeroExample();HeroExample.Criteria cri = example.createCriteria();if (!"".equals(hero.getUserName())) {cri.andUserNameEqualTo(hero.getUserName());}List<Hero> heroList = heroMapper.selectByExample(example);for (Hero fisHero : heroList) {System.out.println(fisHero);}session.commit();//提交事務(wù)} catch (IOException e) {e.printStackTrace();session.rollback();} finally {session.close();}}/*** 刪除指定英雄信息** @param hero*/public void addHero(Hero hero) {SqlSession session = null;try {session = SqlSessionUtils.getSqlSession();HeroMapper heroMapper = session.getMapper(HeroMapper.class);int i = heroMapper.insertSelective(hero);if (i == 1) {System.out.println("添加英雄信息成功!");}session.commit();//提交事務(wù)} catch (IOException e) {e.printStackTrace();session.rollback();} finally {session.close();}}/*** 查詢英雄編碼查詢指定英雄信息** @param sno*/public void selectHeroBySno(String sno) {SqlSession session = null;try {session = SqlSessionUtils.getSqlSession();HeroMapper heroMapper = session.getMapper(HeroMapper.class);Hero hero = heroMapper.selectByPrimaryKey(sno);System.out.println("查詢到的英雄信息:" + hero);session.commit();//提交事務(wù)} catch (IOException e) {e.printStackTrace();session.rollback();} finally {session.close();}}/*** 添加新英雄** @param hero*/public void updateHero(Hero hero) {SqlSession session = null;try {session = SqlSessionUtils.getSqlSession();HeroMapper heroMapper = session.getMapper(HeroMapper.class);int i = heroMapper.updateByPrimaryKeySelective(hero);if (i == 1) {System.out.println("更新英雄信息成功!");}session.commit();//提交事務(wù)} catch (IOException e) {e.printStackTrace();session.rollback();} finally {session.close();}}/*** 刪除指定英雄信息** @param sno*/public void deleteHeroBySno(String sno) {SqlSession session = null;try {session = SqlSessionUtils.getSqlSession();HeroMapper heroMapper = session.getMapper(HeroMapper.class);int i = heroMapper.deleteByPrimaryKey(sno);if (i == 1) {System.out.println("刪除英雄信息成功!");}session.commit();//提交事務(wù)} catch (IOException e) {e.printStackTrace();session.rollback();} finally {session.close();}} }
    2.9. 基礎(chǔ)文件

    以下基礎(chǔ)文件由模板生成
    企業(yè)代碼生成模板:
    https://gitee.com/gb_90/Oracle_Mysql_Generate

    xxxMapper.java xxxMapper.xml 實體類
    2.10. 源碼地址

    https://gitee.com/gb_90/mybatis-web

    總結(jié)

    以上是生活随笔為你收集整理的通过接口操作MyBatis及数据库配置文件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 日韩欧美一级在线 | 国产精品羞羞答答在线 | 亚洲大尺度网站 | 日本人做爰全过程 | 欧美乱妇在线观看 | 成年性生交大片免费看 | 国产欧美日韩一区二区三区 | 亚洲天堂社区 | 老男人av| 老牛嫩草二区三区观影体验 | 波多野结衣电影免费观看 | av av在线 | 26uuu欧美日本 | 香港三级日本三级三69 | 影视先锋av资源 | 精品国产一区二区不卡 | 亚洲视频在线免费看 | 男人操女人的免费视频 | 国产精品亚洲欧美 | 亚洲精品天堂成人片av在线播放 | 日本激情视频在线 | 美女被c出白浆 | 欧美亚洲精品天堂 | 人妻无码中文久久久久专区 | 日本女人毛茸茸 | 丰满人妻熟妇乱偷人无码 | jizz中国少妇 | 婷婷中文网| 在线黄色网| 一个色的综合 | 久久久久免费观看 | 国产日日日| 用力挺进新婚白嫩少妇 | 国产精品亚洲一区二区三区在线观看 | 91看篇| 青娱乐在线视频免费观看 | 国产xxxx性hd极品 | 日本成人免费在线视频 | 特黄在线 | 玖色视频 | 极品少妇xxxx精品少妇 | 99ri国产在线 | 毛片网站免费 | 国产主播在线看 | 少妇丰满尤物大尺度写真 | av黄色片在线观看 | 深夜福利国产精品 | 国产15页| 特级丰满少妇一级aaa爱毛片 | 精品人妻久久久久一区二区三区 | 亚洲欧美综合色 | 一区二区不卡在线观看 | 韩国一区二区三区四区 | 久久精视频 | 黄色一级免费片 | 看中国毛片| 国产成人手机在线 | 欧美日韩精品免费 | 国产精选视频在线观看 | 综合激情在线 | 久久综合爱 | 五月天婷婷激情 | 日韩精品视频免费播放 | 欧美人一级淫片a免费播放 西方av在线 | 亚洲一区二区三区四区在线播放 | 欧洲亚洲自拍 | 蜜臀精品一区二区三区 | 国产一区二区三区四区五区 | 白白色2012年最新视频 | 4438亚洲最大 | 一级全黄少妇性色生活片 | 久久久久一区二区三区四区 | 天天摸天天干 | 一个人看的毛片 | 日本大胆欧美人术艺术 | av高清在线| 久久亚洲电影 | 久久人| 浪漫樱花动漫在线观看免费 | 香蕉视频一区二区三区 | 奴色虐av一区二区三区 | 国产精品五月天 | 日韩一区二区三区四区在线 | 精品无码久久久久久久久果冻 | 国产一区二区三区三州 | 亚洲国产tv | 久久天堂av综合合色蜜桃网 | 99久久久无码国产精品不卡 | 午夜精品视频一区二区三区在线看 | 女性生殖扒开酷刑vk | 女人一区二区 | 成人做爰www免费看视频网站 | 国产艳妇疯狂做爰视频 | 在线观看亚洲专区 | 精品免费国产一区二区三区 | 黄色不雅视频 | 免费午夜视频在线观看 | 欧美日韩在线视频 | 日本中文字幕高清 |