myBatis初学经验----(1)
Java常用的三种编写模式 Spring,SpringMVC,myBatis。
myBatis(原名:iBatis):
开源的ORM(持久层)框架,之前为apahce旗下顶级开源项目,后转到google,变为myBatis.目前代码库:http//github.com/mybatis/mybatis-3/releases
myBatis 主要让软件工程师的精力放在sql上,通过myBatis提供的映射方式,可以自由的将数据映射为javaBean对象。
myBatis配置和使用:
- 引入jar包
<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.3.1</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.38</version> </dependency>
2.创建配置文件
首先建立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"> <mapper namespace="com.xt.mybatis"> <!-- statementId=namespace+queryAnimalInfoBySid 属性ID:标示映射文件中的sql的唯一性,ID被称为statementId 属性 parameterType: 入参参数类型 属性resultType:输出结果类型,表示单条数据记录映射成的javaBean #{value} 表示预处理,代表占位符 ${value} 表示sql字符串的拼接,将结束到的数据不加任何修饰拼装到sql中。 --> <select id="queryAnimalInfoBySid" parameterType="string" resultType="com.xt.mybatis.hello.Animal.entity.Animal"> select * from animal where SID=#{sid} </select> <insert id="insertAnimal" parameterType="com.xt.mybatis.hello.Animal.entity.Animal"> insert into animal vaules (#{sid},#{name},#{kind},#[number},#{addrss}) </insert> <delete id="deleteAnimal" parameterType="string"> delete from animal where SID=#{sid} </delete> <update id="updateAnimal" > update animal set Name=#{name},Kind="kind", Number =#{number},Address=#{address} where SID=#{sid} </update> </mapper>
然后建立myBatis-config.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="xtEnvironment"> <environment id="xtDevelopment"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/bookshop"/> <property name="username" value="root"/> <property name="password" value="root"/> </dataSource> </environment> </environments> <mappers> <!-- 引入Mapper文件 --> <mapper resource="mybatis/mapper/userMapper.xml"/> </mappers> </configuration>
在编写这个文件时,要确定数据的正确性。还有,你要进行操作的表存在,否则先建表。再在工程中建立对应的实体对象,getter,setter和To String方法是必不可少的。
- 创建java类,保存将要测试方法。(这是基础性的运用方法,后继博客中会有更好的方法)
package com.xt.mybatis.hello.Animal.entity; import java.io.IOException; 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 org.junit.Before; import org.junit.Test; public class myBatisTest { SqlSessionFactory ssf = null; SqlSession ss = null; @Before public void Init(){ try { ssf = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis/mybatis-config.xml")); ss = ssf.openSession(); } catch (IOException e) { e.printStackTrace(); } } @Test public void queryAnimalInfoBySid() throws IOException{ //创建SqlsessionFactory通过资源加载器加载配置文件 Animal animal = ss.selectOne("statementId ","数据"); System.out.println("=========="+animal); } @Test public void insertAnimal(){ Animal al = new Animal(); al.setSid("数据"); al.setName("数据"); al.setKind("数据"); al.setNumber(数据); al.setAddress("数据"); int i = ss.insert("statementId ",al); ss.commit(); System.out.println("========insert=========="+i); } @Test public void deleteAnimal(){ int affectedRowNo = ss.delete("statementId ","数据"); ss.commit(); System.out.println("===========delete========="+affectedRowNo); } @Test public void updateAnimal(){ Animal am = new Animal(); am.setSid("1801"); am.setName("数据"); am.setKind("数据"); am.setNumber(数据); am.setAddress("数据"); int i = ss.update("statementId ",am); ss.commit(); System.out.println("======update====="+i); } }
myBatis初学经验----(1)的更多相关文章
- Mybatis初学经验----------------(2)
至于myBatis的配置,上篇文章中有,就不说了.今天谈谈myBatis编写Dao层时的用法. 传统Dao层代码需求 1.在Dao层实现类中,存在大量的模板方法,能否提取模板方法,减少我们的工作量. ...
- Mybatis初学笔记
MyBatis环境搭建:1.需要mybatis-3.3.0.jar,将该jar包导入web工程的libs文件夹中:2.在src下新建一个mybatis-config.xml文件,mybatis的基本配 ...
- Java Persistence with MyBatis 3(中文版) 前言
对很多软件系统而言,保存数据到数据库和从数据库中检索数据是其工作流程中至关重要的一部分.在 Java 领域,有很多的实现了数据持久化层的工具和框架,它们每一个都有自己不同的实现方法.而 MyBatis ...
- 搭建ssm框架经验
要想搭建好ssm框架的开发环境.首先我们需要知道ssm是什么?ssm就是spring,springmvc,mybatis. 然后我们要知道,他们分别都是怎样实现的和做什么用的,充当什么角色?这样我们就 ...
- [推荐]MyBatis 核心技术与面试 34 讲
MyBatis 核心技术与面试 34 讲 职业生涯中常被问到: 如何成为某方面的高手? 如何快速搞定某项技术? 我现在的水平处于什么阶段? -- 我暗暗想,我们从小学到中学到大学,经历了大考三六九.小 ...
- WPF项目学习.一
WPF项目搭建 版权声明:本文为博主初学经验,未经博主允许不得转载. 一.前言 记录在学习与制作WPF过程中遇到的解决方案. 使用MVVM的优点是 数据和视图分离,双向绑定,低耦合,可重用行,相对独立 ...
- WPF项目学习.二
WPF用MVVM的解决记录 版权声明:本文为博主初学经验,未经博主允许不得转载. 一.前言 记录在学习与制作WPF过程中遇到的解决方案. 焦点的控制,键盘事件触发,输入框的数字限制,异步处理,隐藏状 ...
- WPF项目学习.三
工具代码记录 版权声明:本文为博主初学经验,未经博主允许不得转载. 一.前言 记录在学习与制作WPF过程中遇到的解决方案. 分页控件的制作,邮件发送,日志代码,excel导入导出等代码的实现过程: 二 ...
- WPF项目学习.四
信息收录项目 版权声明:本文为博主初学经验,未经博主允许不得转载. 一.前言 记录在学习与制作WPF过程中遇到的解决方案. 需求文案.设计思路.简要数据库结构.简要流程图和明细代码,动图细化每步操作 ...
随机推荐
- golang开发:channel使用
channel主要是用于多个goroutine之间通信 channel语法 channel是引用类型,需要实用make来创建channel,如下 make(chan Type, [buffer]) c ...
- vue项目中视频播放结束返回首页出现1秒左右的白屏问题
vue项目的性能优化问题,一直以来都是大家比较关注的. 近日负责的项目中,使用了SignalR实时通讯,客户端中点击发起播放视频的请求到服务器,服务器接到请求后再调用前端的播放视频方法,以此来达到播放 ...
- RabbitMQ小记(二)
1.RabbitMQ相关介绍 (1)RabbitMQ整体上是一个生产者和消费者模型,主要负责接收.存储.转发消息.RabbitMQ整体结构图如下: (2)生产者:发送消息的一方,生产者创建一条消息,发 ...
- Python-进程-进程池-原理
进程 资源集合,调度和分配资源,说到进程就不得不提到线程,线程和进程是密不可分,进程申请了资源,但真正使用资源的是线程,其实本质上类似面向对象的思想,面向对象把数据和数据的操作封装在一个类中,进程把资 ...
- safari 浏览器版本升级后提示“此网页出现问题,已重新载入网页” 解决办法
safari回退条件 版本回退的前提是关闭电脑的SIP机制,命令行 csrutil status 检测状态.Mac os 10.14以下版本回退Safari后插件还是可以用的,升了新系统退了也没法用了 ...
- shiro认证流程源码分析--练气初期
写在前面 在上一篇文章当中,我们通过一个简单的例子,简单地认识了一下shiro.在这篇文章当中,我们将通过阅读源码的方式了解shiro的认证流程. 建议大家边读文章边动手调试代码,这样效果会更好. 认 ...
- Dell XPS 7590 Hackintosh
网上主流引导Hackintosh的工具有Chameleon, Clover和OpenCore. 但是随着Hackintosh重要驱动开发团队acidanthera逐渐转向OpenCore,后者显然才是 ...
- spring-boot-route(十四)整合Kafka
在上一章中SpringBoot整合RabbitMQ,已经详细介绍了消息队列的作用,这一种我们直接来学习SpringBoot如何整合kafka发送消息. kafka简介 kafka是用Scala和Jav ...
- mycat的privileges标签
参考https://blog.csdn.net/tornadojava/article/details/54948662 privileges标签 对用户的 schema以及表进行精细化的DML权限控 ...
- 原生tab选项卡
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...