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 ...
随机推荐
- ReentrantLock 源码分析从入门到入土
回答一个问题 在开始本篇文章的内容讲述前,先来回答我一个问题,为什么 JDK 提供一个 synchronized 关键字之后还要提供一个 Lock 锁,这不是多此一举吗?难道 JDK 设计人员都是沙雕 ...
- centos7.3安装chrome
Centos7安装chrome浏览器 1.配置yum源 在目录 /etc/yum.repos.d/ 下新建文件 google-chrome.repo cd /ect/yum.repos.d/ vim ...
- bootstrap:图片轮播
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name ...
- Java面向对象之异常【一】
目录 Java面向对象之异常[一] 异常的继承体系 Error Exception 异常是否受检 unchecked exceptions(不受检异常) checked exceptions(受检异常 ...
- PGSQL 字符串作为查询参数的处理
刚从mysql转到pgsql,不太熟悉用法,今天在查询的时候有一个查询参数是字符串,一直没有这一列的错误 ERROR: column "A 桥梁" does not exist L ...
- VS 超级好用的 Ctrl E E
C# Interactive 推荐!!! 先看我怎么用的:随便创建一个类 有些编译期的的值不知道查文档又太麻烦怎么办?自己写个控制台测试咩?试试 C# 交互 罢, 选中这个类ctrl EE 然后输入 ...
- poi解析excel(含有公式)
/** * Jun 25, 2012 */ import java.io.File; import java.io.FileInputStream; import java.io.IOExceptio ...
- playbooks框架部署远程主机
进入到ansible和python环境 进入python3.6虚拟环境 #su - deploy #source .py3-a2.5-env/bin/activate 加载ansible 2.5版本 ...
- maven本地添加Oracle包
因为版权原因,Java后台连接数据库的ojdbc包并不可以用maven直接从网上下载导入,所以需要我们手动将其资源放在本地.下面是步骤: 1.找到Oracle ojdbc6包,拷贝到某备份目录2.包目 ...
- vijos 小胖守皇宫
点击打开题目 树形DP 显然会想到某个点放或不放守卫来定义状态,但在不放的情况下,需要分类讨论是父亲放还是一个儿子放,于是定义以下状态: f[root][0]表示自己不放,父亲也不放 f[root][ ...