MyBatis的简单操作
这里将的是简单的增、删、改、查等基本操作
首先创建java项目,导入相应的依赖包,这里可以参考上一篇博客
1、添加数据
在jike.book.pojo包中,新建java类
JiKeUser.java:
package jike.book.pojo;
public class JiKeUser {
private int id;
private String userName;
private String password;
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;
}
}
在jike.book.map中有:
MyBatisConfig.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之前-->
<typeAliases>
<typeAlias alias="JiKeUser" type="jike.book.pojo.JiKeUser"/>
</typeAliases> <environments default="development">
<environment id="development">
<transactionManager type="JDBC">
</transactionManager>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/jikebook"/>
<property name="username" value="root"/>
<property name="password" value=""/>
</dataSource>
</environment>
</environments> <mappers>
<mapper resource="jike/book/map/jikeUser.xml"/>
</mappers> </configuration>
jikeUser.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="/"> <select id="findById" parameterType="int" resultType="jike.book.pojo.JiKeUser">
select * from jikeUser where id=#{id}
</select> <insert id="insertUser" parameterType="JiKeUser" statementType="PREPARED"
keyProperty="id" useGeneratedKeys="true">
insert into JikeUser (userName,password) values(#{userName},#{password})
</insert>
</mapper>
新建测试类:
TestUpdate.java
package jike.book.test; import java.io.IOException;
import java.io.Reader; import jike.book.map.InterfaceJiKeUserMap;
import jike.book.pojo.JiKeUser; 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 TestUpdate { public static void main(String[] args) {
String resource = "jike/book/map/MyBatisConfig.xml";
Reader reader = null;
SqlSession session;
try {
reader = Resources.getResourceAsReader(resource);
} catch (IOException e) {
e.printStackTrace();
}
SqlSessionFactory sqlMapper = new SqlSessionFactoryBuilder()
.build(reader);
session = sqlMapper.openSession();
try{
/* 添加 */
JiKeUser jku = new JiKeUser();
jku.setUserName("jike001");
jku.setPassword("");
session.insert("insertUser",jku);
session.commit(); }catch(Exception e){
e.printStackTrace();
}finally{
session.close();
}
} }
执行java测试类即可
2、修改
修改数据和添加数据差不多,在jikeUser.xml中添加
<update id="updateUser" parameterType="JiKeUser">
update JiKeUser set userName = #{userName},password=#{password}
where id=#{id}
</update>
然后将测试类改为:
package jike.book.test; import java.io.IOException;
import java.io.Reader; import jike.book.map.InterfaceJiKeUserMap;
import jike.book.pojo.JiKeUser; 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 TestUpdate { public static void main(String[] args) {
String resource = "jike/book/map/MyBatisConfig.xml";
Reader reader = null;
SqlSession session;
try {
reader = Resources.getResourceAsReader(resource);
} catch (IOException e) {
e.printStackTrace();
}
SqlSessionFactory sqlMapper = new SqlSessionFactoryBuilder()
.build(reader);
session = sqlMapper.openSession();
try{
/* 修改 */
JiKeUser jku2 = new JiKeUser();
jku2.setUserName("jike00100");
jku2.setPassword("");
jku2.setId();
session.update("updateUser", jku2); session.commit(); }catch(Exception e){
e.printStackTrace();
}finally{
session.close();
}
} }
即可
3、删除
删除操作稍微有些不同,首先在jike.book.map中新建一个接口
InterfaceJiKeUserMap.java,采用注解方式
package jike.book.map;
import org.apache.ibatis.annotations.Delete;
public interface InterfaceJiKeUserMap {
@Delete("delete from JiKeUser where id=#{id}" )
public void deleteUser(Integer id);
}
在MyBatisConfig.xml中加入map映射
<mapper class="jike.book.map.InterfaceJiKeUserMap" />
然后修改测试类
package jike.book.test; import java.io.IOException;
import java.io.Reader; import jike.book.map.InterfaceJiKeUserMap;
import jike.book.pojo.JiKeUser; 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 TestUpdate { public static void main(String[] args) {
String resource = "jike/book/map/MyBatisConfig.xml";
Reader reader = null;
SqlSession session;
try {
reader = Resources.getResourceAsReader(resource);
} catch (IOException e) {
e.printStackTrace();
}
SqlSessionFactory sqlMapper = new SqlSessionFactoryBuilder()
.build(reader);
session = sqlMapper.openSession();
try{ /* 删除 */
InterfaceJiKeUserMap ijum = session.getMapper(InterfaceJiKeUserMap.class);
ijum.deleteUser();
session.commit(); }catch(Exception e){
e.printStackTrace();
}finally{
session.close();
}
} }
即可
4、查询
查询比较麻烦,分为查询一条数据和查询多条数据
4.1 查询一条语句(两种方式:利用HashMap 和 利用 JiKeUser对象)
4.1.1 利用hashmap实现
在jikeUser.xml下添加语句
<select id="loginSelect" resultType="JiKeUser" parameterType="hashmap">
select * from JiKeUser where userName=#{userName} and password=#{password}
</select>
然后修改测试类
package jike.book.test; import java.io.IOException;
import java.io.Reader;
import java.util.HashMap;
import java.util.List; import jike.book.pojo.JiKeUser; 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 TestSelect { public static void main(String[] args) {
String resource = "jike/book/map/MyBatisConfig.xml";
Reader reader = null;
SqlSession session;
try {
reader = Resources.getResourceAsReader(resource);
} catch (IOException e) {
e.printStackTrace();
}
SqlSessionFactory sqlMapper = new SqlSessionFactoryBuilder()
.build(reader);
session = sqlMapper.openSession();
try{ /*
* 查询一条记录
* */ /* 利用HashMap */
HashMap<String,String> hm = new HashMap();
hm.put("userName", "jike00100");
hm.put("password", "");
JiKeUser temp = session.selectOne("loginSelect",hm);
if(temp!=null){
System.out.println("登陆成功!");
} }catch(Exception e){
e.printStackTrace();
}finally{
session.close();
}
}
}
4.1.2 利用 JiKeUser对象
在jikeUser.xml下添加语句
<select id="login2" resultType="JiKeUser" parameterType="JiKeUser">
select * from JiKeUser where userName=#{userName} and password=#{password}
</select>
修改测试类:
package jike.book.test; import java.io.IOException;
import java.io.Reader;
import java.util.HashMap;
import java.util.List; import jike.book.pojo.JiKeUser; 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 TestSelect { public static void main(String[] args) {
String resource = "jike/book/map/MyBatisConfig.xml";
Reader reader = null;
SqlSession session;
try {
reader = Resources.getResourceAsReader(resource);
} catch (IOException e) {
e.printStackTrace();
}
SqlSessionFactory sqlMapper = new SqlSessionFactoryBuilder()
.build(reader);
session = sqlMapper.openSession();
try{ /*
* 查询一条记录
* */ /* 利用 JiKeUser对象 */
JiKeUser jku = new JiKeUser();
jku.setUserName("jike00100");
jku.setPassword("");
JiKeUser onetemp = session.selectOne("login2",jku);
if(onetemp!=null){
System.out.println("登陆成功");
} }catch(Exception e){
e.printStackTrace();
}finally{
session.close();
}
}
}
4.2 查询多条数据(利用resultType 和 利用resultMap)
4.2.1 利用resultType
在jikeUser.xml下添加语句
<select id="selectJiKeUserList" resultType="JiKeUser">
select * from JiKeUser
</select>
修改测试类
package jike.book.test; import java.io.IOException;
import java.io.Reader;
import java.util.HashMap;
import java.util.List; import jike.book.pojo.JiKeUser; 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 TestSelect { public static void main(String[] args) {
String resource = "jike/book/map/MyBatisConfig.xml";
Reader reader = null;
SqlSession session;
try {
reader = Resources.getResourceAsReader(resource);
} catch (IOException e) {
e.printStackTrace();
}
SqlSessionFactory sqlMapper = new SqlSessionFactoryBuilder()
.build(reader);
session = sqlMapper.openSession();
try{ /*
* 查询多条记录
* */
/* 利用resultType */
List<JiKeUser> ap = session.selectList("selectJiKeUserList");
for(JiKeUser temp:ap){
System.out.println("用户名="+temp.getUserName()+"密码="+temp.getPassword());
} }catch(Exception e){
e.printStackTrace();
}finally{
session.close();
}
}
}
4.2.2 利用resultMap
在jikeUser.xml下添加语句
<resultMap type="JiKeUser" id="JiKeUserMap">
<id property="id" column="id"></id>
<result property="userName" column="userName"/>
<result property="password" column="password"/>
</resultMap>
<select id="selectUsers" resultMap="JiKeUserMap">
select id,userName,password from JiKeUser
</select>
测试类:
package jike.book.test; import java.io.IOException;
import java.io.Reader;
import java.util.HashMap;
import java.util.List; import jike.book.pojo.JiKeUser; 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 TestSelect { public static void main(String[] args) {
String resource = "jike/book/map/MyBatisConfig.xml";
Reader reader = null;
SqlSession session;
try {
reader = Resources.getResourceAsReader(resource);
} catch (IOException e) {
e.printStackTrace();
}
SqlSessionFactory sqlMapper = new SqlSessionFactoryBuilder()
.build(reader);
session = sqlMapper.openSession();
try{ /*
* 查询多条记录
* */ /* 利用resultMap */
List<JiKeUser> ap1 = session.selectList("selectUsers");
for(JiKeUser temp:ap1){
System.out.println("用户名="+temp.getUserName());
}
}catch(Exception e){
e.printStackTrace();
}finally{
session.close();
}
}
}
MyBatis的简单操作的更多相关文章
- Mybatis框架简单使用
Mybatis框架简单使用 环境搭建 新建一个JavaWeb项目,在web\WEB-INF\创建lib文件,并且在其下添加Mybatis的核心包以及依赖包,以及Mysql驱动包,junit4测试包等. ...
- 【MyBatis】MyBatis实现CRUD操作
1.实现基本CRUD功能 使用MyBatis对数据完整的操作,也就是CRUD功能的实现.根据之前的内容,要想实现CRUD,只需要进行映射文件的配置. 范例:修改EmpMapper.xml文件,实现CR ...
- Mybatis多表操作
一:引言 在学习完前面的mybatis基本语法后,大家都有个认知,这个Mybatis太强大了,比之前使用JDBC写方便多了,但是你们当初在使用原生JDBC写SQL查询的时候有没有遇到过多表查询呢?肯定 ...
- MyBatis学习01(初识MyBatis和CRUD操作实现)
1.初识MyBatis 环境说明: jdk 8 + MySQL 5.7.19 maven-3.6.1 IDEA 学习前需要掌握: JDBC MySQL Java 基础 Maven Junit 什么是M ...
- Mybatis实现简单的CRUD(增删改查)原理及实例分析
Mybatis实现简单的CRUD(增删改查) 用到的数据库: CREATE DATABASE `mybatis`; USE `mybatis`; DROP TABLE IF EXISTS `user` ...
- x01.MagicCube: 简单操作
看最强大脑,发现魔方还是比较好玩的,便买了一个,对照七步还原法,居然也能成功还原. 为什么不写一个魔方程序呢?在网上找了找,略作修改,进行简单操作,还是不错的,其操作代码如下: protected o ...
- js简单操作Cookie
贴一段js简单操作Cookie的代码: //获取指定名称的cookie的值 function getCookie(objName) { var arrStr = document.cookie.spl ...
- GitHub学习心得之 简单操作
作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 前言 本文对Github的基本操作进行了总结, 主要基于以下文章: http://gitre ...
- Linq对XML的简单操作
前两章介绍了关于Linq创建.解析SOAP格式的XML,在实际运用中,可能会对xml进行一些其它的操作,比如基础的增删该查,而操作对象首先需要获取对象,针对于DOM操作来说,Linq确实方便了不少,如 ...
随机推荐
- 关于飞控下载时候出现avrdude: stk500_getsync(): not in sync: resp=0x00错误的解决方法
avrdude: stk500_getsync(): not in sync: resp=0x00该问题表述为串口通信失败 经过分析,出现这种情况的原因大致有:1.arduino在IDE下载过程中没有 ...
- Activity 状态的保存和恢复
Activity状态保存的两种情况 一.Activity状态保持概念 保存Activity的状态是非常重要的,例如我们在玩一个游戏的时候,突然来了一个电话,这个时候在接听完电话之后我们返回到游戏中,这 ...
- wxpython下的桥梁信息管理系统
github地址:https://github.com/billiepander/BIMS 第一版: 现在实现了登陆,与部门级别用户录入桥梁检测信息后保存为excel(后期要用数据库存一些关键信息,为 ...
- sql Server 常用存储过程的优化
优化存储过程有很多种方法,下面介绍最常用的7种. 1.使用SET NOCOUNT ON选项 我们使用SELECT语句时,除了返回对应的结果集外,还会返回相应的影响行数.使用SET NOCOUNT ON ...
- ASP.NET中的MD5加密
新人冒泡,打今起在园子里算是开博了,先来写点关于基础性的东西 为以后的写其他的文章做准备. 今天就先来说说MD5加密与在ASP.NET中如何实现MD5加密. MD5加密简单的说就是把一段明文 通过某种 ...
- 传输层-UDP
传输层构建在网络层之上,传输层提供端口到端口之间的通讯. 传输层通过端口号来标识一个端口,不同于网卡,端口是逻辑上的概念.传输层的端口为16个比特(bit)长度,即最多能表示65 536个端口,端口号 ...
- Qt5-控件-QMenu,QMenuBar-菜单栏详解-菜单热键-菜单校验功能
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QMenu> #inclu ...
- [转]C++智能指针的创建
zero 坐在餐桌前,机械的重复“夹菜 -> 咀嚼 -> 吞咽”的动作序列,脸上用无形的大字写着:我心不在焉.在他的对面坐着 Solmyr ,慢条斯理的吃着他那份午餐,维持着他一贯很有修养 ...
- javascript 倒计时代码
<script language="javascript" type="text/javascript"> var interval = 1000; ...
- MMDrawerController 使用遇到的问题及定制
MMDrawerController 1,集成UIViewController * leftDrawer = [[UIViewController alloc] init]; UIViewContro ...