一、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. Excel如何快速选定指定区域

    在日常办公中我们经常遇见需要选中指定的区域,这样选种比较快捷节省时间,要比用鼠标下拉要方便很多. 1.框选的是起始的位置(A1) 2.终止位置 3.这就是我们所要选中的区域例如(A1:H21) 总结: ...

  2. ACM北大暑期课培训第二天

    今天继续讲的动态规划 ... 补充几个要点: 1. 善于利用滚动数组(可减少内存,用法与计算方向有关) 2.升维 3.可利用一些数据结构等方法使代码更优  (比如优先队列) 4.一般看到数值小的 (十 ...

  3. github 删除库

    1.查看库 2.选择想要删除的库,点击setting 3.删除库

  4. Android studio 报错Error:Internal error: (java.lang.ClassNotFoundException) com.google.wireless.android.sdk.stats.IntellijIndexingStats$Index

    Android studio运行make build报错 解决方法 在studio的File-->Settings-->Build, Execution, Deployment---> ...

  5. Qt Installer Framework翻译(5-2)

    创建在线安装程序 联机安装程序获取二进制安装文件中的内容以及存储库描述(Updates.xml).请创建一个存储库,并将其上传到Web服务器.然后在用于创建安装程序的config.xml文件中指定存储 ...

  6. equals()和hashCode()必须同时覆盖的原因

    我们在用JAVA创建自己的类的时候,一种比较常见的覆盖就是覆盖Object中的equals()方法和hashCode()方法.如果不这样做的话,就很可能违反Object.hashCode()的通用约定 ...

  7. python 安装虚拟环境virtualenv

    1.sudo apt install virtualenv 安装失败 2.sudo apt-get update 更新失败 提示: E: 仓库 “http://mirrors.aliyun.com/u ...

  8. mezzanine 历险记

    安装去github下载 mezzanine https://github.com/ganmk/mezzanine 安装出现问题了: grappelli_safe >= 0.4.5 问题好像出在这 ...

  9. POJ Protecting the Flowers

    点击打开题目 题目大意 奶牛要吃花,FJ来赶牛,将第i头牛赶走要2*ti分钟,奶牛每分钟吃di个单位花,求花的最小损失 先赶吃花多的,Wrong Answer QAQ 我们可以算一算损失 设sum=d ...

  10. Windows7只能设置纯色背景解决方法

    解决设置设置纯色图片,不能设置其他背景图片的方法. 比如这样的. 首先找到这个目录 C:\Users\(这个位置填写你的电脑用户名)\AppData\Roaming\Microsoft\Windows ...