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的事物的做法,本文的目的是在这个的基 ...
随机推荐
- Scala泛型详解
在Scala中你可以使用类型参数来实现类和函数,这样的类和函数可以用于多种类型.比如Array[T] 你可以存放任意指定类型T的数据. 类.特质.函数都可以有类型参数:将类型参数放在名字后面用方括号括 ...
- pycharm tips
批量更改变量名,就在该变量名上shift+f6 ../data 两个点,就是上一级目录,一个点就是当前目录 unhashable type: 'list' 使用set进行去重 a = [1,2,2,3 ...
- daofu
快排排序算法 public class QuickSort { public static void Main(String[] args) { , , , , , , , }; quickSort( ...
- jenkins 设置钉钉通知--钉钉机器人
https://blog.csdn.net/workdsz/article/details/77531802
- linux sed 常见字符串处理
1.删除特殊字符 将 1.1.0_boke_1.0.1 转换为110_boke_101 command: new_var=`echo 1.1.0_boke_1.0.1 |sed s/\.//g` ( ...
- CentOS6.5安装sqoop2
1.下载软件:http://archive.cloudera.com/cdh5/cdh/5/ 2.解压:tar -zxvf mysofts/sqoop2-1.99.5-cdh5.6.0.tar.gz ...
- InterProScan 5.25-64.0 安装和使用
InterProScan 5.25-64.0 安装和使用,目前最新版的interproscan 引用自 每日一生信--interproscan安装及使用(终结版)原文官网:http://code.go ...
- vue滚动事件销毁,填坑
eg:富文本的头部固定,当滚轮大于200时(举例)固定在浏览器头部,距离大于富文本时,头部消失 效果: 在富文本下面加一个空div 这么写: mounted() { $(window).scroll( ...
- Spring.之.报错:Caused by: java.lang.ClassNotFoundException: org.aspectj.weaver.reflect.ReflectionWorld$ReflectionWorldException
Caused by: java.lang.ClassNotFoundException: org.aspectj.weaver.reflect.ReflectionWorld$ReflectionWo ...
- PB窗体之间进行传递参数
例:A窗口传递给B窗口y A窗口: 定义参数名称并赋值String s_parm s_parm=username+'%'+password,然后openwithparm(w_main,s_parm) ...