mybatis总结之一
今日内容:Mybatis数据持久层的一种表现,在一定程度上,取代了jdbc。
MyBatis开发的大体步骤:
1.建maven......在pom.xml中进行配置,添加Mybatis包,junit测试jar包,添加连接mysql的数据库包
2.在resources中配置SqlMapperConfig.xml文件,它的作用是配置数据库连接相关信息,主要用于数据库中不变的信息,另外里面有个mappers标签,再里面有个userMapper.xml,里面可以有多个表。
3.userMapper.xml主要用于一些变化的信息,主要是操作信息,如增删改查。
4.建库建表。
5.建一个bean包,依据数据库中的表的字段来定义对应属性的类(实体类、即数据存储的模型),用于存储数据库中的内容,和数据库的表对应,在一定程度上也和前端页面对应。
6.建一个dao包,定义个接口UserDao,里面定义了一些抽象方法,主要是增删改查等。
package cn.sjl.dao;
/**在UserDao接口中定义方法*/
import java.util.List; import cn.sjl.bean.User; public interface UserDao{
void insertUser(User user);
void updateUser(User user);
void deleteUserById(Integer id); //删除对象 依据id
User selectUserById(Integer id); //查询对象 依据id; 返回值为User类数据类型
List<User> selectAll(); //查询所有集合对象记录里所有的数据
}
7.同时在dao包中,定义一个实现UserDaoImpl类,里面主要是实现类,实现接口中的抽象方法,如
public class UserDaoImpl implements UserDao{ public void insertUser(User user) { //sqlSession(有点类似Connection)
SqlSession session=SqlSessionUtil.getSession(); //去工厂拿?再看看书关于SqlSession
session.insert("userDao.addUser",user); //找到固定节点并插入值(记录对象) ??看看书,并看看代码底层方法;
session.commit(); //手动提交
session.close(); //结束session会话
}
}
8.其中的共有的,不变的部分抽出来了,并用static修饰,即当类被加载时就可以执行。
//语法结构等价于DBUtils
package cn.sjl.util; import java.io.InputStream; import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder; import cn.sjl.dao.UserDaoImpl; public class SqlSessionUtil {
private static SqlSessionFactory ssf;
static {
//读配置文件
InputStream in=UserDaoImpl.class.getClassLoader().getResourceAsStream("SqlMapperConfig.xml");
//SqlSessionFactory
ssf=new SqlSessionFactoryBuilder().build(in);//??10:52
} //返回sqlSession对象
public static SqlSession getSession() {
return ssf.openSession();
} } //看一下旧书和厚书;
9.编写映射文件,如下面这个插入操作:
<mapper namespace="userDao">
<!-- 插入user对象 -->
<!-- void insertUser(User user) -->
<!-- 1.insert表示定义insert语句的节点
2.id表节点的名称,值唯一
3.parameterType表示定义的是参数的类型
4.#{name}表示从user对象中取出name属性值,
给username字段赋值
-->
<insert id="insertUser"
parameterType="cn.sjl.bean.User">
insert into t_user(
username,password,phone,email
) values (
#{name},#{password},#{phone},#{email}
) </insert>
------------------------------------------------------------------------------------------------------
package test; import org.junit.Test; import cn.sjl.bean.User;
import cn.sjl.dao.UserDao;
import cn.sjl.dao.UserDaoImpl; public class TestUser { @Test
public void testInsert() {
UserDao userDao=new UserDaoImpl();
User user=new User();
user.setUsername("张三");
user.setPassword("146557");
user.setEmail("zhangsan@sjl.cn");
user.setPhone("153646646");
userDao.insertUser(user);
} }
//单元测试,写一点测试一点,不建议所有的都到最后再测试。
//多练习
//另外还有一种方法不用写实现类,mybatis框架自动添加
##10.测试类中
public void testInsert(){
SqlSession session =
SqlSessionUitl.getSession(); //通过getMapper获取AddressDao的实现类对象
AddressDao addressDao = session.getMapper(AddressDao.class);
//namespace.id
Address address = new Address();
address.setProvince("北京市");
address.setCity("市辖区");
address.setArea("海淀区");
address.setUserAddress("中鼎大厦7层");
addressDao.insert(address);
//提交事务
session.commit();
//关闭session
session.close();
}
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
#{ }、${ } 的区别:
#{ }中的参数是一个动态的占位符,${ }中的参数是一个固定的值;
mybatis总结之一的更多相关文章
- 【分享】标准springMVC+mybatis项目maven搭建最精简教程
文章由来:公司有个实习同学需要做毕业设计,不会搭建环境,我就代劳了,顺便分享给刚入门的小伙伴,我是自学的JAVA,所以我懂的.... (大图直接观看显示很模糊,请在图片上点击右键然后在新窗口打开看) ...
- Java MyBatis 插入数据库返回主键
最近在搞一个电商系统中由于业务需求,需要在插入一条产品信息后返回产品Id,刚开始遇到一些坑,这里做下笔记,以防今后忘记. 类似下面这段代码一样获取插入后的主键 User user = new User ...
- [原创]mybatis中整合ehcache缓存框架的使用
mybatis整合ehcache缓存框架的使用 mybaits的二级缓存是mapper范围级别,除了在SqlMapConfig.xml设置二级缓存的总开关,还要在具体的mapper.xml中开启二级缓 ...
- 【SSM框架】Spring + Springmvc + Mybatis 基本框架搭建集成教程
本文将讲解SSM框架的基本搭建集成,并有一个简单demo案例 说明:1.本文暂未使用maven集成,jar包需要手动导入. 2.本文为基础教程,大神切勿见笑. 3.如果对您学习有帮助,欢迎各种转载,注 ...
- mybatis plugins实现项目【全局】读写分离
在之前的文章中讲述过数据库主从同步和通过注解来为部分方法切换数据源实现读写分离 注解实现读写分离: http://www.cnblogs.com/xiaochangwei/p/4961807.html ...
- MyBatis基础入门--知识点总结
对原生态jdbc程序的问题总结 下面是一个传统的jdbc连接oracle数据库的标准代码: public static void main(String[] args) throws Exceptio ...
- Mybatis XML配置
Mybatis常用带有禁用缓存的XML配置 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE ...
- MyBatis源码分析(一)开篇
源码学习的好处不用多说,Mybatis源码量少.逻辑简单,将写个系列文章来学习. SqlSession Mybatis的使用入口位于org.apache.ibatis.session包中的SqlSes ...
- (整理)MyBatis入门教程(一)
本文转载: http://www.cnblogs.com/hellokitty1/p/5216025.html#3591383 本人文笔不行,根据上面博客内容引导,自己整理了一些东西 首先给大家推荐几 ...
- MyBatis6:MyBatis集成Spring事物管理(下篇)
前言 前一篇文章<MyBatis5:MyBatis集成Spring事物管理(上篇)>复习了MyBatis的基本使用以及使用Spring管理MyBatis的事物的做法,本文的目的是在这个的基 ...
随机推荐
- Linux ssh将命令放入后台
如何在关闭ssh连接的情况下,让程序继续运行? 对Unix,Linux类服务器维护经常是通过ssh完成的,而有些操作比较费时,如更新程序等.此时如果断开ssh连接的话,更新程序就会随之被中断.如何保证 ...
- PHP中的回调函数
回调函数是指调用函数的时候将另一个函数作为参数传递到调用的函数中,而不是传递一个普通的变量作为参数 使用回调函数是为了可以将一段自己定义的功能传到函数内部使用 声明回调函数的方法 变量函数声明 1 2 ...
- (转)以太坊(Ethereum)全零地址(0x000000...)揭秘
最近,一位小伙伴向我咨询问题,说他发现了一个诡异的现象.以太坊的区块链中居然有全是0的地址:0x0000000000000000000000000000000000000000 这究竟是怎么回事儿呢? ...
- Python 全栈开发十 socket网络编程
一.客户端(client)服务端(sever)架构 在计算机中有很多常见的C/S架构,例如我们的浏览器是客户端.而百度网站和其他的网站就是服务端:视频软件是客户端,提供视频的腾讯.优酷.爱奇艺就是服务 ...
- AC自动机模板2
题目链接:https://www.luogu.org/problemnew/show/P3796 #include <cstdio> #include <cmath> #inc ...
- 【转360】KB4041678 Windows 仅安全更新(2017.10) 补丁更新后执行SQL出错! http://bbs.360.cn/thread-15201531-1-1.html
把EXCEL20003表数据导入到MDB数据库中sql命令语句\"SELECT * INTO 表 FROM [Excel 8.0;DATABASE=C:\\1.xls].[Sheet1$]\ ...
- Node.JS + Mysql数据库
服务嘛,当然离不开数据库了,你要是见到数据就哭了,我建议你还是看看本文,不要做数据哭啊,哈哈哈 要做 ‘数据酷’嘛,哈哈哈 一 安装 1. wget -i -c http://dev.mysql.co ...
- Amber learning note A8: Loop Dynamics of the HIV-1 Integrase Core Domain
1. Prepare Input File $ tleap >source leaprc.protein.ff14SB ----- Source: /home/wangq/Programs/am ...
- iOS UI进阶-5.0 蓝牙/加速计/传感器
传感器 实现代码: #import "ViewController.h" @interface ViewController () @end @implementation Vie ...
- Unity3d打包发布Android程序
unty3d这个款游戏引擎的强大之处就是编写一个程序.可以多平台发布.我的是安卓手机.所以此文介绍下发布安卓的过程 发布安卓前. 1:需要配置java环境.这里之前写过一篇java的配置 http: ...