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的事物的做法,本文的目的是在这个的基 ...
随机推荐
- sap 程序之间的相互调用
1:首先进入到local object 目录下. 右键>create >function group,创建一个函数组. 右键创建类其它的东西 2:在创建的function group(fu ...
- mac-Navicat Premium 12连接Oracle
安装及破解: https://pan.baidu.com/s/1ip0oM9p856k34t3cIExa7Q(提取码请留言) Navicat连接了Oracle数据库 测试连接失败,提示:hostnam ...
- [Java] Header checkBox in Jtable
The reference is from here. 在Jtable里面我们可能会有checkbox, 而有时候我们有很多checkbox需要同时check或者同时uncheck的时候, 如果有一个 ...
- IdentityServer4:Endpoint
Endpoint的概念在IdentityServer里其实就是一些资源操作的url地址:如同Restful API里面的Endpoint是概念: 那么可以通过你自己的授权服务端得到相对应的地址与信息: ...
- android逆向四则运算
不断更新 除法: ; bRet = a/b+; return bRet; .text:00001010 a = R0 ; int.text:00001010 b = R1 ; int.text:000 ...
- js函数中写默认值的几种方式(常见的)
<script> <!--第一种写法,我更喜欢第一种写法直观一些--> function Person(name){ this.name = name || '默认名字乔丹'; ...
- MyBatis基础入门《六》Like模糊查询
MyBatis基础入门<六>Like模糊查询 描述: 未改动的文件,不再粘贴出来.项目中SQL的xml映射文件重要标签如下: mapper namespace cache 配置给定命令空间 ...
- 深入解析Java反射(1) - 基础
深入解析Java反射(1) - 基础 最近正筹备Samsara框架的开发,而其中的IOC部分非常依靠反射,因此趁这个机会来总结一下关于Java反射的一些知识.本篇为基本篇,基于JDK 1.8. 一.回 ...
- Lua用table模拟二维数组
local array = {}; , , , , } , , , , } local row3 = {"I", "love", "lua" ...
- CSS背景与边框属性-----box-shadow
box-shadow:none | <shadow> [ , <shadow> ]* <shadow> = inset? && <leng ...