Mybatis简单的入门之增删改查
一般的过程例如以下
1、加入Mybatis所须要的包,和连接数据库所需的包
2、配置mybatis-config.xml文件
3、配置与pojo相应的映射文件
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>
<typeAliases><!--类型别名-->
<typeAlias alias="User" type="com.iss.pojo.User" />
</typeAliases>
<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/test?useUnicode=true&characterEncoding=UTF-8" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/iss/pojo/User.xml" /><!--映射文件的路径-->
</mappers>
</configuration>
pojo实体类
package com.iss.pojo;
public class User {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public User(int id, String name) {
super();
this.id = id;
this.name = name;
}
public User() {
super();
}
}
User.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="User"><!--映射的命名空间也就是在mybatis中配置的别名-->
<select id="selectUser" parameterType="int" resultType="User"><!--在mybatis-config.xml中为类型起了别名-->
<![CDATA[
select * from user where id = #{id}]]><!--查询的是表名不是对象-->
</select>
<insert id="insertUser" parameterType="User">
<![CDATA[insert into user
value(#{id},#{name})]]>
</insert>
<delete id="deleteUser" parameterType="int">
delete from user where
id=#{id}
</delete>
<update id="updateUser" parameterType="User">
update user set
name=#{name} where id=#{id}
</update>
</mapper>
Mybatis工具类
Mybatis工具类
package com.iss.util;
import java.io.IOException;
import java.io.Reader;
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 com.sun.org.apache.xpath.internal.operations.Gte;
public class MybatisUtil {
private static SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();//类似于Hibernate中Configration
private static SqlSessionFactory sqlSessionFactory;//类似于Hibernate中SessionFactory
// 静态初始化块配置文件在类执行时仅仅载入一次
static {
String resource = "mybatis-config.xml";
Reader reader = null;
try {
reader = Resources.getResourceAsReader(resource);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
sqlSessionFactory = builder.build(reader);
}
private MybatisUtil() {
// TODO Auto-generated constructor stub
}
public static SqlSessionFactoryBuilder getBuilder() {
return builder;
}
public static void setBuilder(SqlSessionFactoryBuilder builder) {
MybatisUtil.builder = builder;
}
public static SqlSessionFactory getSqlSessionFactory() {
return sqlSessionFactory;
}
public static void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory) {
MybatisUtil.sqlSessionFactory = sqlSessionFactory;
}
// 获得sqlSession对象类似于Hibernate中的session
public static SqlSession getSqlSession() {
SqlSession sqlSession = sqlSessionFactory != null ? sqlSessionFactory
.openSession() : null;
return sqlSession;
}
public static void closeSession() {
SqlSession sqlSession = getSqlSession();
if (sqlSession != null) {
sqlSession.close();
}
}
}
UserService
package com.iss.service;
import org.apache.ibatis.session.SqlSession;
import com.iss.pojo.User;
import com.iss.util.MybatisUtil;
public class UserService {
public static User selectUser(int id) {
SqlSession sqlSession = MybatisUtil.getSqlSession();
User user = sqlSession.selectOne("selectUser", 1);
MybatisUtil.closeSession();
return user;
}
public static void insertUser(int id, String name) {
User user = new User();
user.setId(id);
user.setName(name);
SqlSession sqlSession = MybatisUtil.getSqlSession();
sqlSession.insert("insertUser", user);
sqlSession.commit();
MybatisUtil.closeSession();
}
public static void updateUser(int id, String name) {
User user = new User();
user.setId(id);
user.setName(name);
SqlSession sqlSession = MybatisUtil.getSqlSession();
sqlSession.update("updateUser", user);
sqlSession.commit();
MybatisUtil.closeSession();
}
public static void deleteUser(int id) {
SqlSession sqlSession = MybatisUtil.getSqlSession();
sqlSession.delete("deleteUser", id);
sqlSession.commit();
MybatisUtil.closeSession();
}
}
TestUser
package com.iss.test;
import com.iss.pojo.User;
import com.iss.service.UserService;
public class TestUser {
public static void main(String[] args) {
UserService.insertUser(3, "world");
User user = UserService.selectUser(2);
System.out.println(user.getName());
UserService.updateUser(1, "wdy");
System.out.println(UserService.selectUser(2).getName());
UserService.deleteUser(2);
}
}
总结Hibernate 和Mybatis非常相似
基本的差别
Hibernate的映射文件是对表的映射
Mybatis的映射文件是对表操作的一种映射
Mybatis简单的入门之增删改查的更多相关文章
- Mybatis入门之增删改查
Mybatis入门之增删改查 Mybatis如果操作成功,但是数据库没有更新那就是得添加事务了.(增删改都要添加)----- 浪费了我40多分钟怀疑人生后来去百度... 导入包: 引入配置文件: sq ...
- Mybatis实现简单的CRUD(增删改查)原理及实例分析
Mybatis实现简单的CRUD(增删改查) 用到的数据库: CREATE DATABASE `mybatis`; USE `mybatis`; DROP TABLE IF EXISTS `user` ...
- SpringBoot+Mybatis+Maven+MySQL逆向工程实现增删改查
SpringBoot+Mybatis+MySQL+MAVEN逆向工程实现增删改查 这两天简单学习了下SpringBoot,发现这玩意配置起来是真的方便,相比于SpringMVC+Spring的配置简直 ...
- 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_3-2.使用Mybatis注解开发视频列表增删改查
笔记 2.使用Mybatis注解开发视频列表增删改查 讲解:使用Mybatis3.x注解方式 增删改查实操, 控制台打印sql语句 1.控制台打印sql语句 ...
- MyBatis入门2_增删改查+数据库字段和实体字段不一致情况
本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 谢谢配合! 当数据库字段和实体bean中属性不一致时 之前数据库P ...
- Mybatis之基于XML的增删改查
这里先吐槽下,写的半天的东西,IE浏览器弹出调试窗口导致写的东西全部没保存,搞得我还要重新用谷歌写,思路全没了,fuck. 前面学习了下spring的DAO层,说起DAO层,那ORM肯定是少不了的,O ...
- SSMybatis整合 --详细解读Mybatis对oracle数据库进行增删改查(一)
Mybatis是现在主流的持久化层框架,与Hibernate不同的是,它鼓励程序员使用原声SQL语句对数据库进行操作.因此提供了非常灵活的功能.特别是当数据库同时访问数过多,需要进行优化时,使用sql ...
- mybatis:开发环境搭建--增删改查--多表联合查询(多对一)
什么是mybatisMyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索.MyBatis使用简单的XML或 ...
- 【Mybatis】mybatis开启Log4j日志、增删改查操作
Mybatis日志(最常用的Log4j) 官方网站http://www.mybatis.org/mybatis-3/zh/logging.html 1.在src目录下创建一个log4j.propert ...
随机推荐
- adnroid仿miui的dialog
先来看下效果图: 当中show和dismiss的时候有动画效果. 原先试过使用PopupWindow来做,可是使用的时候不是那么舒服,毕竟不是dialog嘛. 所以这次尝试还是使用dialog来做 , ...
- C++ Primer 学习笔记_61_重载操作符与转换 --自增/自减操作符
重载操作符与转换 --自增/自减操作符 引言: 自增,自减操作符常常由诸如迭代器这种类实现,这种类提供相似于指针的行为来訪问序列中的元素.比如,能够定义一个类,该类指向一个数组并为该数组中的元素提供訪 ...
- UltraEdit破解方法最强收录
作为一个能够满足你一切编辑需求的强大文本编辑器.ultraedit在IT届有着非常高的人气.只是它正版的价钱也是不廉价滴,没记错的话是要好几十刀. 那么对于我们来说,破解UltraEdit就是一项必备 ...
- SE 2014年3月31日
一. 描述OSPF划分区域的优势. OSPF划分区域的优势主要表现在以下几个方面: 1. 当网络中路由器的数量增大时,划分区域有利于减轻一部分性能较低的设备的处理和维护LSA数据库. 2. 区域的划分 ...
- C#函数参数传递解惑
C#语言函数参数的传递 就像C语言众多的后世子孙一样,C#的函数参数是非常讲究的.首先,参数必须写在函数名后面的括号里,这里我们有必要称其为形参.参数必须有一个参数名称和明确的类型声明.该参数名称 ...
- error C2471: 无法更新程序数据库
这段时间在使用VS做一个项目.在使用过程中,今天遇到了一个问题,也就是题目所说的那样: error C2471: 无法更新程序数据库.之后在网上搜了一下,得到了两种解决方案,两种方案分别如下: (一) ...
- win7系统u盘安装过程
1.准备好带有启动项的U盘,并把镜像解压到里面去 2.插上u盘,开机长按del键进入bois设置界面 在boot页面 1.boot device priority->1st boot devic ...
- 采用DWR、maven保存数据到数据库
一.原理: Ajax是时下比较流行的一种web界面设计新思路,其核心思想是从浏览器获取XMLHttp对象与服务器端进行交互. DWR(Direct Web Remoting)就是实现了这种Ajax技术 ...
- 怎样在C++中获得完整的类型名称
Wrote by mutouyun. (http://darkc.at/cxx-get-the-name-of-the-given-type/) 地球人都知道C++里有一个typeid操作符能够用来获 ...
- dede时间格试,dede时间标签
dede的日期时间格式[field:pubdate function='strftime("时间",@me'/]这个是固定格式,(利用strftime()函数格式化时间),因些只需 ...