一、创建全局文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration> <!--默认的数据库配置 修改成mysql 之前是 development-->
<environments default="mysql">
<environment id="mysql">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/qy100?CharacterEncoding=utf-8"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments> <!--mybatis 是使用
1.简单的xml 或者
2.注解来配置和映射原生类型,接口和java的pojo(普通老式java对象)-->
<!--为数据库中记录的-->
<!--这里就是将在dao层下创建的DeptMapper.xml映射文件 加入到全局文件中 -->
<mappers>
<mapper resource="com/aaa/dao/DeptMapper.xml"/>
</mappers> </configuration>

二、创建实体类

package com.aaa.entity;

public class Dept {
private int id;
private String ename;
private String job;
private double sal; public Dept(int id, String ename, String job, double sal) {
this.id = id;
this.ename = ename;
this.job = job;
this.sal = sal;
} public Dept(int id, String ename) {
this.id = id;
this.ename = ename;
} public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public String getEname() {
return ename;
} public void setEname(String ename) {
this.ename = ename;
} public String getJob() {
return job;
} public void setJob(String job) {
this.job = job;
} public double getSal() {
return sal;
} public void setSal(double sal) {
this.sal = sal;
} @Override
public String toString() {
return "Dept{" +
"id=" + id +
", ename='" + ename + '\'' +
", job='" + job + '\'' +
", sal=" + sal +
'}';
}
}

三、在DAO层中创建  mybatis-mapper.xml 映射文件。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!--mybatis的原生接口。--> <!--工作空间就是
1.我在dao层下 创建的DeptMapper 文件
2.或者是对应的 dao 层中的接口。
-->
<mapper namespace="com.aaa.dao.DeptMapper">
<select id="selectDept" resultType="com.aaa.entity.Dept">
select * from dept;
</select> <delete id="deleteDept" parameterType="com.aaa.entity.Dept">
delete from dept where id=5;
</delete> <insert id="insertDept" parameterType="com.aaa.entity.Dept">
insert into dept (ename,job,sal) values("武王嬴荡","秦王",1200);
</insert> <update id="updateDept" parameterType="com.aaa.entity.Dept">
update dept set ename="嬴政" ,job="千古第一帝" where id=5;
</update> </mapper>

四、测试

package com.aaa.test;

import com.aaa.entity.Dept;
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; /* 测试 mybatis原生的接口
* 1.Resources:资源类
* 2.SqlSessionFactoryBuilder:构建器
* 3.SqlSessionFactory :会话工厂
*
* */
public class Test {
public static void main(String[] args) throws IOException {
//1.加载全局文件和配置文件 String resource="mybatis-config.xml"; InputStream is = Resources.getResourceAsStream(resource);
SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(is); //2.开启会话
SqlSession sqlSession = ssf.openSession();
List<Dept> deptList = sqlSession.selectList("com.aaa.dao.DeptMapper.selectDept"); for (Dept dept:deptList
) {
System.out.println("部门信息"+dept);
}
//2.关闭会话
sqlSession.close();
}
}

五、封装一个单列的会话工厂。

package com.aaa.util;

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;
// 懒汉模式 节省资源
public class Factory {
private static SqlSessionFactory ssf=null; static{
String resource="mybatis-config.xml";
InputStream is=null; try {
is = Resources.getResourceAsStream(resource);
ssf = new SqlSessionFactoryBuilder().build(is);
} catch (IOException e) {
e.printStackTrace();
}
} public static SqlSessionFactory getSsf(){
return ssf;
}
public static SqlSession getSqlSession(){
return ssf.openSession();
}
}

六、测试

package com.aaa.test;

import com.aaa.entity.Dept;
import com.aaa.util.Factory;
import org.apache.ibatis.session.SqlSession; import java.util.List;
/*
* 1.增删改查 注意!执行增删改的操作时 查询语句只能放在后面执行 否则报错!
* 2.进行增删改操作 需要进行提交!
*
* */
public class Test02 {
public static void main(String[] args) {
//利用单列的工厂类 获得连接
SqlSession sqlSession = Factory.getSqlSession(); //1.增加
sqlSession.insert("com.aaa.dao.DeptMapper.insertDept");
sqlSession.commit();
//2.修改
sqlSession.update("com.aaa.dao.DeptMapper.updateDept");
sqlSession.commit();
//3.删除
sqlSession.delete("com.aaa.dao.DeptMapper.deleteDept");
sqlSession.commit(); //4.查询
List<Dept> deptList = sqlSession.selectList("com.aaa.dao.DeptMapper.selectDept"); for (Dept dept:deptList
) {
System.out.println("部门信息"+dept);
}
//关闭会话
sqlSession.close();
}
}

mybatis 原生写法创建项目的更多相关文章

  1. 创建以mybatis为基础的web项目(2)mabitis中的一对一关系项目实战

    mabitis中的一对一关系项目实战: 1.首先根据创建以mybatis为基础的web项目(1)中的流程将web项目部署好 打开IDE,建立web工程 在lib下面粘贴mybatis的jar,log4 ...

  2. 搭建Spring + SpringMVC + Mybatis框架之一(创建项目)

    创建项目 用maven管理项目很方便,不用手动下载jar包,直接在pom.xml配置文件中,maven可以帮助我们自动下载,非常方便 新建一个web project,添加maven支持就可以了,这样创 ...

  3. MUI框架-01-介绍-创建项目-简单页面

    MUI框架-01-介绍-准备-创建项目 从0开始快速高效学习 MUI 框架 官方文档:http://dev.dcloud.net.cn/mui/ui/ (1)MUI 介绍 MUI 是什么,解决了什么问 ...

  4. vue- Vue-Cli脚手架工具安装 -创建项目-页面开发流程-组件生命周期- -03

    目录 Vue-Cli 项目环境搭建 与 python 基础环境对比 环境搭建 创建启动 vue 项目 命令创建项目(步骤小多) 启动 vue 项目(命令行方式) 启动 vue 项目(pycharm 方 ...

  5. VUE创建项目

    Vue Cli项目搭建     vue项目需要自建服务器:node 什么是node: 用C++语言编写,用来运行JavaScript语言 node可以为前端项目提供server (包含了socket) ...

  6. MyBatis 源码分析-项目总览

    MyBatis 源码分析-项目总览 1.概述 本文主要大致介绍一下MyBatis的项目结构.引用参考资料<MyBatis技术内幕> 此外,https://mybatis.org/mybat ...

  7. ASP.NET+MVC入门踩坑笔记 (一) 创建项目 项目配置运行 以及简单的Api搭建

    哈喽各位 我又回来了! 前段时间研究了下ASP.NET,刚开始也是随便找网上的各种教程来看,但是鉴于本人技术有限,还是走了相当长的一段弯路的.所以我写下了这篇文章.希望各位刚刚入坑的ASP.NET开发 ...

  8. SSM保姆级从创建项目到使用,包括事务和设置回滚

    1. 简介 Spring 和 Mybaits整合 2. 创建项目 负责将代理类记性扫描,扫描的是Mapper接口所在的包,这个是mybatis提供的,所以会去找SqlSessionFactory 2. ...

  9. Hybird应用开发实践(一)使用原生/cordova混合项目

    最近准备尝试hybird开发原生应用,因为公司的项目本来就是原生开发的,所以准备选择cordova作为webview嵌入原生项目的开发方式.这里就以mac上整合ios项目为例. 1. 创建cordov ...

随机推荐

  1. 【项目管理】《IT项目管理》Kathy Schwalbe 第1章 总论

    博主:海底淤泥 1.为什么项目管理领域引起了大家的兴趣 1.更好控制财力.物力.人力资源 2.改进客户关系 3.缩短开发时间 4.降低成本和提高生产率 5.提高质量和可靠性 6.更大的边际利益空间 7 ...

  2. Chapter 9 Measurement Bias

    目录 9.1 Measurement Error The structure of measurement error 9.3 Mismeasured confounders 9.4 Intentio ...

  3. Chapter 7 Confounding

    目录 7.1 The structure of confounding Confounding and exchangeability Confounding and the backdoor cri ...

  4. Java程序设计基础笔记 • 【第4章 条件结构】

    全部章节   >>>> 本章目录 4.1 条件结构 4.1.1 程序流程控制 ​4.1.2 单分支if结构 4.1.3 双分支if结构 4.1.4 实践练习 4.2 多重条件结 ...

  5. 编写Java程序,使用List集合和Map集合输出 市和区

    如图: 代码: import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java ...

  6. Jsonschema2pojo从JSON生成Java类(命令行)

    1.说明 jsonschema2pojo工具可以从JSON Schema(或示例JSON文件)生成Java类型, 在文章Jsonschema2pojo从JSON生成Java类(Maven) 已经介绍过 ...

  7. Ubuntu18.04安装/卸载NVIDIA显卡驱动

    1 显卡驱动下载 官网:NVIDIA 搜索适合本机的驱动 获取最新版本驱动 立即下载 文件 以上,显卡驱动下载完成. 2 显卡驱动安装 2.1 添加可执行权限 进入驱动文件目录sudo chmod a ...

  8. 图解MySQL:count(*) 、count(1) 、count(主键字段)、count(字段)哪个性能最好?

    大家好,我是小林. 当我们对一张数据表中的记录进行统计的时候,习惯都会使用 count 函数来统计,但是 count 函数传入的参数有很多种,比如 count(1).count(*).count(字段 ...

  9. div背景css样式笔记

    <style type="text/css"> .div1 { width: 1024px; height: 100%; margin: 0 auto; /*backg ...

  10. python 读取配置文件ini ---ConfigParser

    Python读取ini文件需要用到 ConfigParser 模块 关于ConfigParser模块的介绍详情请参照官网解释:https://docs.python.org/2.7/library/c ...