一、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会自动生成动态代理实现类

          开发规范:

  1. mapper接口的全限定名要和mapper映射文件的namespace的值相同。
  2. mapper接口的方法名称要和mapper映射文件中的statement的id相同;
  3. mapper接口的方法参数只能有一个,且类型要和mapper映射文件中statement的parameterType的值保持一致。
  4. 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的更多相关文章

  1. Spring mybatis源码篇章-MybatisDAO文件解析(二)

    前言:通过阅读源码对实现机制进行了解有利于陶冶情操,承接前文Spring mybatis源码篇章-MybatisDAO文件解析(一) 默认加载mybatis主文件方式 XMLConfigBuilder ...

  2. Spring mybatis源码篇章-MybatisDAO文件解析(一)

    前言:通过阅读源码对实现机制进行了解有利于陶冶情操,承接前文Spring mybatis源码篇章-SqlSessionFactory 加载指定的mybatis主文件 Mybatis模板文件,其中的属性 ...

  3. Mybatis-Dao层开发之Mapper接口

    Mapper接口开发方法只需要程序员编写Mapper接口(相当于Dao接口),由Mybatis框架根据接口定义创建接口的动态代理对象,代理对象的方法体同上边Dao接口实现类方法. Mapper接口开发 ...

  4. mybatis-dao开发

    学而时习之,不亦说乎!                              --<论语> 本文以前文“mybatis-入门”为基础,同时再次提醒最佳参考资料: http://www. ...

  5. 二 Mybatis架构&MybatisDao的两种开发方式(原始Dao,接口动态代理)

    MyBatis架构图 三个对象: SqlSessionFactoryBuilder.SqlSessionFactory.SqlSession SqlSessionFactoryBuilder:主要用来 ...

  6. Mybatis-Dao层实现(通过代理方式)

    1.代理方式开发是主流 2.Mapper接口开发方法只需要编写Mapper接口(相当于Dao接口),然后由Mybatis根据接口创建动态代理对象 Mapper接口开发需要遵循以下规范 一一对应 Use ...

  7. [原创]mybatis详解说明

    mybatis详解 2017-01-05MyBatis之代理开发模式1 mybatis-Dao的代理开发模式 Dao:数据访问对象 原来:定义dao接口,在定义dao的实现类 dao的代理开发模式 只 ...

  8. Spring+MyBatis框架中sql语句的书写,数据集的传递以及多表关联查询

    在很多Java EE项目中,Spring+MyBatis框架经常被用到,项目搭建在这里不再赘述,现在要将的是如何在项目中书写,增删改查的语句,如何操作数据库,以及后台如何获取数据,如何进行关联查询,以 ...

  9. MyBatis之代理开发模式

    1 mybatis-Dao的代理开发模式 Dao:数据访问对象 原来:定义dao接口,在定义dao的实现类 dao的代理开发模式 只需要定义dao接口,由mybatis产生dao接口的实现类. 1.1 ...

随机推荐

  1. 【C++】自加、自减(补充)

    // // main.cpp // [记录]自加.自减(补充) // // Created by T.P on 2018/3/7. // Copyright © 2018年 T.P. All righ ...

  2. 大数据框架开发基础之Zookeeper入门

    Zookeeper是Hadoop分布式调度服务,用来构建分布式应用系统.构建一个分布式应用是一个很复杂的事情,主要的原因是我们需要合理有效的处理分布式集群中的部分失败的问题.例如,集群中的节点在相互通 ...

  3. MySQL之插入数据(添加数据)-INSERT

    基本语法: INSERT 语句有两种语法形式,分别是 INSERT…VALUES 语句和 INSERT…SET 语句. 1.INSERT...VLAUES语句 INSERT VLAUES的语法格式如下 ...

  4. virtualenv虚拟环境使用及介绍

    一.为什么使用virtualenv虚拟环境 每个虚拟环境下的依赖相互独立,不同的项目可以单独使用一套python环境,减少各依赖包的影响 更容易部署 容器化 二.virtualenv创建虚拟环境 三. ...

  5. python3 三行代码基于HTTP2完美实现APNS推送【详解】

    第一次做苹果APNS(Apple Push Notification service)推送,关于APNS推送原理以及证书的获取方式网上已经有许多资料,在此不做过多赘述,需要注意的是证书分为测试证书和正 ...

  6. ArcGIS Server for JavaScript 3.3 的安装部署

    一.安装包下载 首先从官网下载ArcGIS API for JavaScript 3.3 的API和SDK,地址:http://support.esrichina.com.cn/2011/0223/9 ...

  7. 在IIS上发布netcore项目

    保证电脑上有.net core sdk或者.net core runtime; 需要安装AspNetCoreModule托管模块:DotNetCore.2.0.5-WindowsHosting.exe ...

  8. python 矩阵向右旋转90°(分行输入输出)

    输入格式 第一行输入两个整数n,m,用空格隔开. 接下来n行,每行输入m个整数,表示输入矩阵.矩阵元素都是int范围内的整数. 输出格式 输出m行,每行n个空格隔开的整数,表示旋转以后的矩阵.注意:每 ...

  9. map文件分析

    1.MAP文件基本概念 段(section):描述映像文件的代码和数据块 RO:Read-Only的缩写,包括RO-data(只读数据)和RO-code(代码) RW:Read-Write的缩写,主要 ...

  10. 【PCIE-3】---PCIE设备的枚举扫描(经典好文)

    前面两个小节大致总结了下PCIE的基本知识,算是扫盲篇吧.本文主要总结PCIE设备的枚举扫描过程,此部分才是PCIE模块的重点,无论是在BIOS下还是系统驱动下都会用到. 按照国际惯例,先列问题: 1 ...