博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mybatis总结之一
阅读量:5332 次
发布时间:2019-06-15

本文共 2873 字,大约阅读时间需要 9 分钟。

今日内容:mybatis数据持久层的一种表现,在一定程度上,取代了jdbc。

1.建maven......

在pom.xml中进行配置,添加mabatis包,junit测试jar包,添加连接mysql的数据库包

2.在resources中配置SqlMapperConfig.xml文件,它的作用是配置数据库连接相关信息,主要用于数据库中不变的信息,另外里面有个mappers标签,再里面有个userMapper.xml,里面可以有多个表。

3.userMapper.xml主要用于一些变化的信息,主要是操作信息,如增删改查。

4.建库建表。

5.建一个bean包,依据数据库中的表的字段来定义对应属性的类(实体类),用于存储数据库中的内容。

6.建一个dao包,定义个接口UserDao,里面定义了一些抽象方法,主要是增删改查等。

package cn.tedu.dao;/**在UserDao接口中定义方法*/import java.util.List;import cn.tedu.bean.User;public interface UserDao{void insertUser(User user);void updateUser(User user);void deleteUserById(Integer id);//删除对象依据idUser selectUserById(Integer id);//查询对象依据id 返回值为User类数据类型List
selectAll();//查询所有集合对象记录里所有的数据}

 

7.同时在dao包中,定义一个实现UserDaoImpl类,里面主要是实现类,实现接口中的抽象方法,如

public class UserDaoImpl implements UserDao{public void insertUser(User user) {       //sqlSession(有点类似Connection)SqlSession session=SqlSessionUtil.getSession();//去工厂拿session.insert("userDao.addUser",user);//找到固定节点并插入值(记录对象)session.commit();//手动提交session.close();//结束session会话}}

 

8.其中的共有的,不变的部分抽出来了,并用static修饰,即当类被加载时就可以

执行。

//语法结构等价于DBUtils

package cn.tedu.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.tedu.dao.UserDaoImpl;public class SqlSessionUtil {private static SqlSessionFactory ssf;static {//读配置文件InputStream in=UserDaoImpl.class.getClassLoader().getResourceAsStream("SqlMapperConfig.xml");//SqlSessionFactoryssf=new SqlSessionFactoryBuilder().build(in);//??10:52}//返回sqlSession对象public static SqlSession getSession() {    return ssf.openSession();}}

 

 

9.编写映射文件,如下面这个插入操作:

insert into t_user( username,password,phone,email ) values ( #{name},#{password},#{phone},#{email} )

 

------------------------------------------------------------------------------------------------------

package test;import org.junit.Test;import cn.tedu.bean.User;import cn.tedu.dao.UserDao;import cn.tedu.dao.UserDaoImpl;public class TestUser {@Testpublic void testInsert() {UserDao userDao=new UserDaoImpl();User user=new User();user.setUsername("张三");user.setPassword("146557");user.setEmail("zhangsan@tedu.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.idAddress address = new Address();address.setProvince("北京市");address.setCity("市辖区");address.setArea("海淀区");address.setUserAddress("中鼎大厦7层");addressDao.insert(address);//提交事务session.commit();//关闭sessionsession.close();}

 

转载于:https://www.cnblogs.com/shijinglu2018/p/9515270.html

你可能感兴趣的文章
洛谷 3870 [TJOI2009]开关
查看>>
【牛客-16643】统计数字(简单排序)
查看>>
www.aaa.com/index.html跳转www.aaa.com设置
查看>>
ssdb binlog机制 存疑
查看>>
Vue 2.0 组件库总结
查看>>
HDU5033 Building(单调栈)
查看>>
Kafka 安装配置 及 简单实验记录
查看>>
想成为程序猿?28个程序员专供在线学习网站(转)
查看>>
font-style: oblique文字斜体,display:inline-block显示间隙
查看>>
css设置滚动条并显示或隐藏
查看>>
【leetcode❤python】13. Roman to Integer
查看>>
常用关于 JavaScript 中的跨域访问方法
查看>>
织梦万能调用LOOP标签!
查看>>
asp.net MVC helper 和自定义函数@functions小结
查看>>
L1-Day34
查看>>
Linux主机在LNMP环境中同时运行多个PHP版本
查看>>
玩转Xcode之修改系统生成的注释模板
查看>>
8、二进制中1的个数------------>剑指offer系列
查看>>
.eww
查看>>
ssh The authenticity of host '10.11.26.2 (10.11.26.2)' can't be established
查看>>