我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MyBatis系列:(3)基于MyBat

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MyBatis系列:(3)基于MyBat


Emp.java

package com.rk.entity;

public class Emp {
    private Integer id;
    private String name;
    private Double sal;
    public Emp(){}
    
    public Emp(Integer id, String name, Double sal) {
        this.id = id;
        this.name = name;
        this.sal = sal;
    }

    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Double getSal() {
        return sal;
    }
    public void setSal(Double sal) {
        this.sal = sal;
    }
    
}


EmpMapper.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">
<!-- namespace属性是名称空间,必须唯一 -->
<mapper namespace="mynamespace">
    <insert id="add" parameterType="com.rk.entity.Emp">
        insert into emp(id,name,sal) values(#{id},#{name},#{sal})
    </insert>
    <update id="update" parameterType="com.rk.entity.Emp">
        update emp set name=#{name},sal=#{sal} where id=#{id}
    </update>
    <select id="findById" resultType="com.rk.entity.Emp">
        select id,name,sal from emp where id=#{anything123}
    </select>
    <select id="findAll" resultType="com.rk.entity.Emp">
        select id,name,sal from emp
    </select>
    <delete id="delete" parameterType="com.rk.entity.Emp">
        delete from emp where id=#{id}
    </delete>
</mapper>


findById也可以这样写

	<!-- 根据ID查询
		 如果参数不是一个实体的话,只是一个普通变量,例如:int,double,String
		 这里的#{中间的变量名可以随便写},不过提倡就用方法的形参
	 -->
	<select id="findById" parameterType="int" resultType="com.rk.entity.Emp">
		select id,name,sal from students where id = #{id}
	</select>



mybatis.xml

<?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>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://127.0.0.1:3306/testdb"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="com/rk/entity/EmpMapper.xml"/>
    </mappers>
</configuration>


MyBatisUtils.java

package com.rk.utils;

import java.io.IOException;
import java.io.Reader;
import java.sql.Connection;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class MyBatisUtils {
    private static ThreadLocal<SqlSession> threadLocal = new ThreadLocal<SqlSession>();
    private static SqlSessionFactory sqlSessionFactory;
    static{
        try {
            Reader reader = Resources.getResourceAsReader("mybatis.xml");
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
        } catch (IOException e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        }
    }
    private MyBatisUtils() {}
    public static SqlSession getSqlSession(){
        SqlSession sqlSession = threadLocal.get();
        if(sqlSession == null){
            sqlSession = sqlSessionFactory.openSession();
            threadLocal.set(sqlSession);
        }
        return sqlSession;
    }
    
    public static void closeSqlSession(){
        SqlSession sqlSession = threadLocal.get();
        if(sqlSession != null){
            sqlSession.close();
            threadLocal.remove();
        }
    }
    
    public static void main(String[] args) {
        Connection conn = MyBatisUtils.getSqlSession().getConnection();
        System.out.println(conn!=null ? "连接成功" : "连接失败");
    }
}


EmpDao.java

package com.rk.dao;

import java.util.List;

import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import com.rk.entity.Emp;
import com.rk.utils.MyBatisUtils;

public class EmpDao {
    @Test
    public void add(){
        Emp emp = new Emp(3, "小刚", 300D);
        SqlSession sqlSession = null;
        try {
            sqlSession = MyBatisUtils.getSqlSession();
            int i = sqlSession.insert("mynamespace.add", emp);
            System.out.println("本次操作影响"+i+"行数据");
            sqlSession.commit();
        } catch (Exception e) {
            e.printStackTrace();
            sqlSession.rollback();
        }
        finally{
            MyBatisUtils.closeSqlSession();
        }
    }
    
    @Test
    public void update(){
        Emp emp = new Emp(3, "Tomcat", 400D);
        SqlSession sqlSession = null;
        try {
            sqlSession = MyBatisUtils.getSqlSession();
            int i = sqlSession.update("mynamespace.update", emp);
            System.out.println("本次操作影响"+i+"行数据");
            sqlSession.commit();
        } catch (Exception e) {
            e.printStackTrace();
            sqlSession.rollback();
        }
        finally{
            MyBatisUtils.closeSqlSession();
        }        
    }
    
    @Test
    public void findById(){
        SqlSession sqlSession = null;
        try {
            sqlSession = MyBatisUtils.getSqlSession();
            Emp emp = sqlSession.selectOne("mynamespace.findById", 3);
            System.out.println( emp.getName() + ":"+emp.getSal());
            sqlSession.commit();
        } catch (Exception e) {
            e.printStackTrace();
            sqlSession.rollback();
        }
        finally{
            MyBatisUtils.closeSqlSession();
        }        
    }
    
    @Test
    public void findAll(){
        SqlSession sqlSession = null;
        try {
            sqlSession = MyBatisUtils.getSqlSession();
            List<Emp> list = sqlSession.selectList("mynamespace.findAll");
            if(list != null && list.size()>0){
                for(Emp emp : list){
                    System.out.println( emp.getName() + ":"+emp.getSal());
                }
            }
            sqlSession.commit();
        } catch (Exception e) {
            e.printStackTrace();
            sqlSession.rollback();
        }
        finally{
            MyBatisUtils.closeSqlSession();
        }        
    }
    
    @Test
    public void delete(){
        SqlSession sqlSession = null;
        try {
            sqlSession = MyBatisUtils.getSqlSession();
            Emp emp = new Emp(3, "", 0D);
            sqlSession.delete("mynamespace.delete", emp);
            sqlSession.commit();
        } catch (Exception e) {
            e.printStackTrace();
            sqlSession.rollback();
        }
        finally{
            MyBatisUtils.closeSqlSession();
        }        
    }
}










免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MyBatis系列:(3)基于MyBat

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MyBatis系列:(3)基于MyBat

Emp.javapackage com.rk.entity;public class Emp {    private Integer id;    private String name;    private Double sal;  
2023-01-31

mysql系列之多实例3----基于my

上一篇博文mysql系列之多实例2----基于多配置文件介绍了,如何部署基于多配置文件的mysql多实例,本篇博文将介绍基于mysql自带的mysqld_multi工具来如何实现mysql多实例的部署和管理!环境:CentOS 6.5 x8
2023-01-31

基于Snort的***检测系统 3

三章使用Snort规则如同病毒,大多数***行为都具有某种特征,Snort的规则就是用这些特征的有关信息构建的。在第1章中我们提到,你可以用蜜罐来取得***者所用的工具和技术的信息,以及他们都做了什么。此外,还有***者会利用的已知的系统弱
2023-01-31

【SpringBoot DB 系列】Mybatis 基于 AbstractRoutingDataSource 与 AOP 实现多数据源切换

【SpringBoot DB 系列】Mybatis 基于 AbstractRoutingDataSource 与 AOP 实现多数据源切换前面一篇博文介绍了 Mybatis 多数据源的配置,简单来讲就是一个数据源一个配置指定,不同数据源的 Mapper 分开指

	【SpringBoot DB 系列】Mybatis 基于 AbstractRoutingDataSource 与 AOP 实现多数据源切换
2017-11-21

WCF系列-WCF基础(3) 宿主方式

WCF开发框架的宿主方式http://www.cnblogs.com/wuhuacong/archive/2013/02/22/2922195.html http://www.cnblogs.com/Gyoung/p/3651076.htm
2023-01-31

CCNA系列课程(3)CDP及设备基本操

第三节课     CDP及Cisco 设备常规操作杜飞2009-06-25       今天主要介绍一些Cisco设备的自动发现协议:CDP,然后再介绍一下设备的基本操作如接口类型,常见命令等。首先咱们先来看第一个知识点Cisco Disc
2023-01-31

3Python全栈之路系列之基于sock

发布时间:2017年3月16日 00:04 浏览(106) 评论(0) 分类:Python前言此处没有前言粘包在实现发送文件功能之前我们先来理解下粘包的问题,下面有两张图,我觉得很清晰的就可以理解到了。正常情况下发送文件第一步: 客户端把获
2023-01-31

Android项目实战系列—基于博学谷(五)个人资料

由于这个模块内容较多,篇幅较长,请耐心阅读。个人资料模块分为两个部分个人资料资料修改一、个人资料 1、个人资料界面 (1)、创建个人资料界面 在com.buxuegu.activity包中创建一个java类,命名为UserInfoActiv
2022-06-06

【USRP】调制解调系列5:16QAM、32QAM、64QAM、256QAM、1024QAM、基于labview的实现

QAM 正交振幅键控是一种将两种调幅信号(2ASK和2PSK)汇合到一个信道的方法,因此会双倍扩展有效带宽,正交调幅被用于脉冲调幅。正交调幅信号有两个相同频率的载波,但是相位相差90度(四分之一周期,来自积分术语)。一个信号叫I信号,另一个
2023-08-30

【USRP】调制解调系列4:BPSK、QPSK、8PSK、OQPSK、Pi/4DQPSK,基于labview的实现

PSK Phase Shift Keying – 相移键控 在某些调制解调器中用于数据传输的调制系统,在最简单的方式中,二进制调制信号产生0和1。载波相位来表示信号占和空或者二进制1和O。对于有线线路上较高的数据传输速率,可能发生4个或8个
2023-08-30

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录