通过接口操作MyBatis及数据库配置文件
生活随笔
收集整理的這篇文章主要介紹了
通过接口操作MyBatis及数据库配置文件
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
優(yōu)點:
文章目錄
- 一、回顧
- 二、如何通過接口操作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映射文件信息。比如:
操作有點麻煩,所以我們采用接口的形式,通過約定,進行更為簡單的操作。
有一句話特別重要:約定優(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.jar2.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
2.10. 源碼地址
https://gitee.com/gb_90/mybatis-web
總結(jié)
以上是生活随笔為你收集整理的通过接口操作MyBatis及数据库配置文件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Trigger触发器_05
- 下一篇: java.sql.SQLExceptio