mybatis 原生写法创建项目
一、创建全局文件
<?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 原生写法创建项目的更多相关文章
- 创建以mybatis为基础的web项目(2)mabitis中的一对一关系项目实战
mabitis中的一对一关系项目实战: 1.首先根据创建以mybatis为基础的web项目(1)中的流程将web项目部署好 打开IDE,建立web工程 在lib下面粘贴mybatis的jar,log4 ...
- 搭建Spring + SpringMVC + Mybatis框架之一(创建项目)
创建项目 用maven管理项目很方便,不用手动下载jar包,直接在pom.xml配置文件中,maven可以帮助我们自动下载,非常方便 新建一个web project,添加maven支持就可以了,这样创 ...
- MUI框架-01-介绍-创建项目-简单页面
MUI框架-01-介绍-准备-创建项目 从0开始快速高效学习 MUI 框架 官方文档:http://dev.dcloud.net.cn/mui/ui/ (1)MUI 介绍 MUI 是什么,解决了什么问 ...
- vue- Vue-Cli脚手架工具安装 -创建项目-页面开发流程-组件生命周期- -03
目录 Vue-Cli 项目环境搭建 与 python 基础环境对比 环境搭建 创建启动 vue 项目 命令创建项目(步骤小多) 启动 vue 项目(命令行方式) 启动 vue 项目(pycharm 方 ...
- VUE创建项目
Vue Cli项目搭建 vue项目需要自建服务器:node 什么是node: 用C++语言编写,用来运行JavaScript语言 node可以为前端项目提供server (包含了socket) ...
- MyBatis 源码分析-项目总览
MyBatis 源码分析-项目总览 1.概述 本文主要大致介绍一下MyBatis的项目结构.引用参考资料<MyBatis技术内幕> 此外,https://mybatis.org/mybat ...
- ASP.NET+MVC入门踩坑笔记 (一) 创建项目 项目配置运行 以及简单的Api搭建
哈喽各位 我又回来了! 前段时间研究了下ASP.NET,刚开始也是随便找网上的各种教程来看,但是鉴于本人技术有限,还是走了相当长的一段弯路的.所以我写下了这篇文章.希望各位刚刚入坑的ASP.NET开发 ...
- SSM保姆级从创建项目到使用,包括事务和设置回滚
1. 简介 Spring 和 Mybaits整合 2. 创建项目 负责将代理类记性扫描,扫描的是Mapper接口所在的包,这个是mybatis提供的,所以会去找SqlSessionFactory 2. ...
- Hybird应用开发实践(一)使用原生/cordova混合项目
最近准备尝试hybird开发原生应用,因为公司的项目本来就是原生开发的,所以准备选择cordova作为webview嵌入原生项目的开发方式.这里就以mac上整合ios项目为例. 1. 创建cordov ...
随机推荐
- 【LeetCode】738. Monotone Increasing Digits 解题报告(Python)
[LeetCode]738. Monotone Increasing Digits 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu ...
- MacOS使用Docker创建MySQL主主数据库
主从同步配置可以参考上一篇MacOS使用Docker创建MySQL主从数据库 一.创建MySQL数据库容器配置文件对应目录 我们在当前用户下创建一组目录,用来存放MySQL容器配置文件,(Linux下 ...
- [技术干货-算子使用] Mindspore 控制流中存在原地更新操作类副作用算子时循环值不更新问题记录
关于mindspore 原地更新类算子的一点思考记录如下: 现象记录: 原始测试代码 错误结果复现: 分析: 如果在场景中加入42行的copy()操作此时cpu的结果就会正确,但是gpu的结果则不受c ...
- <数据结构>XDOJ321.高铁网络
问题与解答 描述: 国家建设高铁网络,网络由一些连接城市的高铁线路构成.现有高铁建设情况可列为一张统计表,表中列出了每一条高铁线路直接连接的两个城市.国家的建设目标是全国每两个城市之间都可以实现高铁交 ...
- 【优雅代码】01-lombok精选注解及原理
[优雅代码]01-lombok精选注解及原理 欢迎关注b站账号/公众号[六边形战士夏宁],一个要把各项指标拉满的男人.该文章已在github目录收录. 屏幕前的大帅比和大漂亮如果有帮助到你的话请顺手点 ...
- PHP 中的僵尸进程、孤儿进程详解
僵尸进程 当子进程运行结束,父进程仍然继续运行,但父进程没有对子进程进行回收,释放子进程占用的资源,此时子进程就成为了一个僵尸进程. 在Unix进程管理中,如果新开的子进程运行结束,父进程将会收到一个 ...
- Linux 使用 scp 命令远程拷贝文件和目录
使用方法: $ scp --help scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file] [-l limit] [-o s ...
- CF995E Number Clicker
题目分析 首先,我们必须明白,操作都是互逆的,\(1,2\)之间是可以互相转化的,这是不需证明的,对于操作\(3\),实际上,是求当前数的逆元,我们知道,逆元就是求当前数在模另一个数下的倒数,那么,逆 ...
- Python_上下文管理器
上下文管理器(context manager)是 Python 编程中的重要概念,用于规定某个对象的使用范围.一旦进入或者离开该使用范围,会有特殊操作被调用 (比如为对象分配或者释放内存).它的语法形 ...
- Centos安装与配置
一.安装 默认安装 二.配置 配置网卡 BOOTPROTO=none ONBOOT=yes IPADDR=xxx.xxx.x.xx PREFIX=24 GATEWAY=xxx.xxx.x.x DNS1 ...