MybatisDao
一、mybatisDao的编写(原始方式,不用)
1.接口编写
public interface UserDao {
public void save(User user);
public User findUserById(int id);
}
2.实现类
public class UserDaoImp implements UserDao {
private SqlSessionFactory ssf;
public UserDaoImp(SqlSessionFactory ssf) {
this.ssf = ssf;
}
@Override
public void save(User user) {
SqlSession sqlSession = ssf.openSession();
sqlSession.insert("insertUser", user);
sqlSession.commit();
sqlSession.close();
}
@Override
public User findUserById(int id) {
SqlSession sqlSession = ssf.openSession();
User user = sqlSession.selectOne("insertUser", id);
sqlSession.commit();
sqlSession.close();
return user;
}
}
3.测试
public class Demo03 {
SqlSessionFactory sessionFactory;
@Before
public void before() throws IOException {
//1.读取配置文件
InputStream is = Resources.getResourceAsStream("SqlMapConfig.xml");
//2.通过SqlSessionFactoryBuilder创建SqlSessionFactory
sessionFactory = new SqlSessionFactoryBuilder().build(is);
//3.通过SqlSessionFactoty创建SqlSession
}
@Test
public void test01(){
UserDao dao = new UserDaoImp(sessionFactory);
User user1 = dao.findUserById(1);
System.out.println(user1);
} }
二、常用dao编写方式(Mapper代理方式)
程序员只需要写mapper接口就行,mybatis会自动生成动态代理实现类
开发规范:
- mapper接口的全限定名要和mapper映射文件的namespace的值相同。
- mapper接口的方法名称要和mapper映射文件中的statement的id相同;
- mapper接口的方法参数只能有一个,且类型要和mapper映射文件中statement的parameterType的值保持一致。
- mapper接口的返回值类型要和mapper映射文件中statement的resultType值或resultMap中的type值保持一致;
第一步,编写接口
public interface UserMapper {
public int save(User user);//返回受影响的行数.
public User findUserById(int id);
}
第二步,编写mapper.xml
<mapper namespace="com.law.mapper.UserMapper">
<!--namespace和接口名一样-->
<insert id="save" parameterType="com.law.model.User">
INSERT INTO user (username,sex,birthday,address) VALUE (#{username},#{sex},#{birthday},#{address})
</insert>
<select id="findUserById" parameterType="int" resultType="com.law.model.User">
SELECT * FROM user WHERE id = #{id}
</select>
</mapper>
配置到全局配置文件中
<mapper resource="com/law/mapper/UserMapper.xml"></mapper>
第三部,使用
@Test
public void test01(){
UserMapper userMapper = session.getMapper(UserMapper.class);//默认jdk动态代理
System.out.println(userMapper.findUserById(1));
userMapper.save(new User("xxx","x", new Date(),"sichuan")); }
三、配置Aliases(别名)
<typeAliases>
<!--<typeAlias type="com.gyf.model.User" alias="user"></typeAlias>-->
<!--指定包名,别名就是类名,第一个小写 User 别名就是user-->
<package name="com.law.model"></package>
<package name="com.law.vo"></package>
</typeAliases>
四、配置文件加载的方式
<mappers>
<!--第一种:写映射文件的名字-->
<!--<mapper resource="com/gyf/mapper/UserMapper.xml"></mapper>-->
<!--第二种:写类名,一定要有个映射文件与之对应
如果没有,那么在UserMapper要声明注解-->
<!--<mapper class="com.gyf.mapper.UserMapper"></mapper>-->
<!--第三种:可以写包名-->
<mapper resource="com/law/mapper/UserMapper.xml"></mapper>
</mappers>
MybatisDao的更多相关文章
- Spring mybatis源码篇章-MybatisDAO文件解析(二)
前言:通过阅读源码对实现机制进行了解有利于陶冶情操,承接前文Spring mybatis源码篇章-MybatisDAO文件解析(一) 默认加载mybatis主文件方式 XMLConfigBuilder ...
- Spring mybatis源码篇章-MybatisDAO文件解析(一)
前言:通过阅读源码对实现机制进行了解有利于陶冶情操,承接前文Spring mybatis源码篇章-SqlSessionFactory 加载指定的mybatis主文件 Mybatis模板文件,其中的属性 ...
- Mybatis-Dao层开发之Mapper接口
Mapper接口开发方法只需要程序员编写Mapper接口(相当于Dao接口),由Mybatis框架根据接口定义创建接口的动态代理对象,代理对象的方法体同上边Dao接口实现类方法. Mapper接口开发 ...
- mybatis-dao开发
学而时习之,不亦说乎! --<论语> 本文以前文“mybatis-入门”为基础,同时再次提醒最佳参考资料: http://www. ...
- 二 Mybatis架构&MybatisDao的两种开发方式(原始Dao,接口动态代理)
MyBatis架构图 三个对象: SqlSessionFactoryBuilder.SqlSessionFactory.SqlSession SqlSessionFactoryBuilder:主要用来 ...
- Mybatis-Dao层实现(通过代理方式)
1.代理方式开发是主流 2.Mapper接口开发方法只需要编写Mapper接口(相当于Dao接口),然后由Mybatis根据接口创建动态代理对象 Mapper接口开发需要遵循以下规范 一一对应 Use ...
- [原创]mybatis详解说明
mybatis详解 2017-01-05MyBatis之代理开发模式1 mybatis-Dao的代理开发模式 Dao:数据访问对象 原来:定义dao接口,在定义dao的实现类 dao的代理开发模式 只 ...
- Spring+MyBatis框架中sql语句的书写,数据集的传递以及多表关联查询
在很多Java EE项目中,Spring+MyBatis框架经常被用到,项目搭建在这里不再赘述,现在要将的是如何在项目中书写,增删改查的语句,如何操作数据库,以及后台如何获取数据,如何进行关联查询,以 ...
- MyBatis之代理开发模式
1 mybatis-Dao的代理开发模式 Dao:数据访问对象 原来:定义dao接口,在定义dao的实现类 dao的代理开发模式 只需要定义dao接口,由mybatis产生dao接口的实现类. 1.1 ...
随机推荐
- 27.python中excel处理库openpyxl使用详解
openpyxl是一个第三方库,可以处理xlsx格式的Excel文件.pip install openpyxl安装. 读取Excel文件 需要导入相关函数 ? 1 2 3 from openpyxl ...
- Go 开发关键技术指南 | 敢问路在何方?(内含超全知识大图)
作者 | 杨成立(忘篱) 阿里巴巴高级技术专家 Go 开发关键技术指南文章目录: 为什么你要选择 Go? Go 面向失败编程 带着服务器编程金刚经走进 2020 年 敢问路在何方? Go 开发指南大图 ...
- Linux学习_菜鸟教程_1
Linux系统启动过程:内核的引导 .运行init.系统初始化.建立终端.用户登录系统 内核引导:计算机开机,然后BIOS开机自检,按照BIOS中设置的启动设备(通常是硬盘)来启动. 操作系统接管硬件 ...
- Netty快速入门(08)ByteBuf组件介绍
前面的内容对netty进行了介绍,写了一个入门例子.作为一个netty的使用者,我们关注更多的还是业务代码.也就是netty中这两种组件: ChannelHandler和ChannelPipeline ...
- 【转】Hive Data Manipulation Language
Hive Data Manipulation Language Hive Data Manipulation Language Loading files into tables Syntax Syn ...
- 【转】7本免费的Java电子书和教程
本文由 ImportNew - 唐小娟 翻译自 Javapapers.如需转载本文,请先参见文章末尾处的转载要求. 1. Thinking in Java (Third Edition) 本书的作者是 ...
- Java Math类(java.lang包)
Math类包含用于执行基本数学运算的方法,其所有方法都是静态方法,所以使用该类中的方法时,可以直接使用类名.方法名,如: Math.round(); 运行结果:
- es6 面向对象选项卡(自动轮播功能)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 7月17日刷题记录 分治Getting!循环比赛日程表
通过数:1 ┭┮﹏┭┮ qdoj.xyz 1053 分治-循环比赛日程表 其实今天晚上留给编程的时间并不多,做出一道... 不过收获还是非常大的 毕竟本人从来没有学习过分治算法,今天竟然攻克了我人生中 ...
- ffifdyop——绕过中一个奇妙的字符串
根据师傅们的博客总结如下: ffifdyop 经过md5加密后:276f722736c95d99e921722cf9ed621c 再转换为字符串:'or'6<乱码> 即 'or'66� ...