01—mybatis开山篇
CREATE TABLE `tb_user` (
`Id` BIGINT(20) NOT NULL AUTO_INCREMENT,
`Username` VARCHAR(50) COLLATE utf8_bin DEFAULT NULL,
`Password` VARCHAR(50) COLLATE utf8_bin DEFAULT NULL,
`Nickname` VARCHAR(50) COLLATE utf8_bin DEFAULT NULL,
`Type` INT(11) DEFAULT NULL,
PRIMARY KEY (`Id`)
)
package org.mybatis.test.model;
public class User {
private int id;
private String username;
private String password;
private String nickname;
private int type;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
}
<?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="org.mybatis.test.model.User">
<insert id="add" parameterType="org.mybatis.test.model.User">
insert into tb_user (username,password,nickname,type)
value(#{username},#{password},#{nickname},#{type})
</insert>
<update id="update" parameterType="org.mybatis.test.model.User">
update tb_user set password=#{password},nickname=#{nickname},type=#{type} where id=#{id}
</update> <delete id="delete" parameterType="int">
delete from tb_user where id=#{id}
</delete> <select id="load" parameterType="int" resultType="org.mybatis.test.model.User">
select * from tb_user where id=#{id}
</select> <select id="list" resultType="org.mybatis.test.model.User">
select * from tb_user
</select>
</mapper>
username=root
password=123456
url=jdbc:mysql://localhost:3306/mybatistest
driver=com.mysql.jdbc.Driver
<?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>
<properties resource="jdbc.properties"/>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="${driver}" />
<property name="url" value="${url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
</dataSource>
</environment>
</environments>
<!-- 将mapper文件加入到配置文件中 -->
<mappers>
<mapper resource="org/mybatis/test/model/User.xml"/>
</mappers>
</configuration>
package org.mybatis.test.test; import java.io.IOException;
import java.io.InputStream;
import java.util.List;
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.Test;
import org.mybatis.test.model.User; public class TestMyBatis {
@Test
public void testInsertUser() {
try {
//1、创建配置文件(mybatis-config.xml)的输入流
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
//2、创建SQLSessionFactory
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
//3、创建SQLSessioin
SqlSession session = factory.openSession();
//4、调用mapper文件插入数据(调用之前需要将mapper文件加入到mybatis-config.xml中)
User u = new User();
u.setNickname("小助理001");
u.setPassword("123456");
u.setUsername("zhuli001");
u.setType(0);
session.insert("org.mybatis.test.model.User.add", u);
session.commit();
session.close();
} catch (IOException e) {
e.printStackTrace();
}
}
@Test
public void testUpdateUser() {
try {
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
SqlSession session = factory.openSession();
User u = new User();
u.setNickname("小猪手001");
u.setPassword("111111");
u.setType(0);
u.setUsername("zhushou");
u.setId(1);
session.update("org.mybatis.test.model.User.update",u);
session.commit();
session.close();
} catch (IOException e) {
e.printStackTrace();
}
}
@Test
public void testDeleteUser() {
try {
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory f = new SqlSessionFactoryBuilder().build(is);
SqlSession session = f.openSession();
session.delete("org.mybatis.test.model.User.delete",2);
session.commit();
session.close();
} catch (IOException e) {
e.printStackTrace();
}
}
@Test
public void testLoad() {
SqlSession session = null;
try{
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory f = new SqlSessionFactoryBuilder().build(is);
session = f.openSession();
User u = (User)session.selectOne(User.class.getName()+".load", 1);
System.out.println(u.getNickname());
}
catch (IOException e) {
e.printStackTrace();
}
finally {
session.close();
}
} @Test
public void testList() {
SqlSession session = null;
try{
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory f = new SqlSessionFactoryBuilder().build(is);
session = f.openSession();
List<User> us = session.selectList(User.class.getName()+".list", null);
for (User u : us) {
System.out.println(u.getId()+"-"+u.getUsername()+"-"+u.getNickname()); //逐个输出数组元素的值
}
} catch (IOException e) {
e.printStackTrace();
}
finally {
session.close();
}
} }
01—mybatis开山篇的更多相关文章
- 01—EF开山篇,ORM介绍
我是2014年接触的EF,用了一年多,感觉非常的方便,现在的公司没有使用,最近有朋友接了两个项目找我帮忙,都想使用EF,自己也有断时间没有使用,借着这个机会复习下.Entity Framework,简 ...
- [高并发]Java高并发编程系列开山篇--线程实现
Java是最早开始有并发的语言之一,再过去传统多任务的模式下,人们发现很难解决一些更为复杂的问题,这个时候我们就有了并发. 引用 多线程比多任务更加有挑战.多线程是在同一个程序内部并行执行,因此会对相 ...
- Struts2开山篇【引入Struts、自定义MyStruts框架】
前言 这是Strtus的开山篇,主要是引入struts框架-为什么要引入struts,引入struts的好处是什么-. 为什么要引入struts? 首先,在讲解struts之前,我们来看看我们以前写的 ...
- 【DevOps】团队敏捷开发系列--开山篇
随着软件发布迭代的频率越来越高,传统的「瀑布型」(开发-测试-发布)模式已经不能满足快速交付的需求.2009 年左右 DevOps 应运而生,开发运维一体化,通过自动化工具与流程让整个软件开发构建.测 ...
- WCF开山篇__图片传输
WCF开山篇__图片传输 一. 简介 Windows Communication Foundation(WCF)是由微软发展的一组数据通信的应用程序接口,可以翻译为Windows通讯接口,它是. ...
- MyBatis高级篇之整合ehcache缓存框架
MyBatis高级篇之整合ehcache缓存框架 2017-09-01 0 Comments 1,671 Views 0 Times 一.前言 MyBatis为我们提供了Cache接口,也提供 ...
- 01: tornado基础篇
目录:Tornado其他篇 01: tornado基础篇 02: tornado进阶篇 03: 自定义异步非阻塞tornado框架 04: 打开tornado源码剖析处理过程 目录: 1.1 Torn ...
- Mybatis 实用篇(四)返回值类型
Mybatis 实用篇(四)返回值类型 一.返回 List.Map List<User> getUsers(); <select id="getUsers" re ...
- Mybatis 实用篇(三)参数处理
Mybatis 实用篇(三)参数处理 sql 语句中的参数 parameterType 可以省略不写. 一.参数封装 1.1 单个参数处理 public interface UserMapper { ...
随机推荐
- 最新 昆仑万维java校招面经 (含整理过的面试题大全)
从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.昆仑万维等10家互联网公司的校招Offer,因为某些自身原因最终选择了昆仑万维.6.7月主要是做系统复习.项目复盘.Leet ...
- HIVE的UDF
HIVE的UDF 新建java工程,导入hive相关包,导入hive相关的lib. 创建类继承UDF 自己编写一个evaluate方法,返回值和参数任意. 为了能让mapred ...
- mui mui-control-item获得选中的标签
function getActiveControl() { var segmentedControl = document.getElementById("top-scroll") ...
- win10配置Keras及GPU环境
今天搭建了Keras深度学习的环境 详细记录一下 安装Anaconda3 Anaconda指的是一个开源的Python发行版本,其包含了conda.Python等180多个科学包及其依赖项. Anac ...
- UWP笔记-自定义Grid背景图片
之前写简单的UWP版本地音乐播放器,有自定义背景壁纸的功能,现在贴在这里回顾下. Page.xaml 页面,添加Grid <Grid x:Name="mainGrid"/&g ...
- (模板)poj1681 高斯消元法求异或方程组(无解、唯一解、多解)
题目链接:https://vjudge.net/problem/POJ-1681 题意:类似于poj1222,有n×n的01矩阵,翻转一个点会翻转其上下左右包括自己的点,求最少翻转多少点能使得矩阵全0 ...
- virtualbox 扩容存储
本文讲解一种方式: 第一步: 我们需要将virtual box 设置成全局的环境变量 第二步: 找到要修改的xxx.vdi文件,通过命令来修改 下面操作步骤 1.设置virtual box 的环境变量 ...
- storm常见问题
一.storm ui 不显示 supervisor 信息 在zk节点上删掉storm信息,重新启动storm集群即可
- Go语言注意事项
必须恰当导入需要的包,缺少了必要的包或者导入了不需要的包,程序都无法编译通过.这项严格要求避免了程序开发过程中引入未使用的包(译注:Go语言编译过程没有警告信息,争议特性之一 import 声明必须跟 ...
- 【广搜】Knight Moves
题目描述 Mr Somurolov, fabulous chess-gamer indeed, asserts that no one else but him can move knights fr ...