mybatis的dao接口实现小结
来源:互联网 发布:淘宝能寄到国外吗 编辑:程序博客网 时间:2024/05/21 19:28
原始Dao开发方式
理解步骤
1. 写xml文件;
2. 写dao接口
3. 写daoimpl数据库实现类
映射文件 user. xml
<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPEmapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mappernamespace="test">
<!-- 根据id获取用户信息 -->
<selectid="findUserById"parameterType="int"resultType="cn.itcast.mybatis.po.User">
select * from user where id = #{id}
</select>
<!--添加用户 -->
<insertid="insertUser"parameterType="cn.hpu.mybatis.po.User">
<selectKeykeyProperty="id"order="AFTER"resultType="java.lang.Integer">
select LAST_INSERT_ID()
</selectKey>
insert into user(username,birthday,sex,address)
values(#{username},#{birthday},#{sex},#{address})
</insert>
</mapper>
Dao接口
Public interface UserDao {
public User getUserById(int id)throws Exception;
public void insertUser(User user)throws Exception;
}
Dao实现类
Public class UserDaoImplimplements UserDao {
//注入SqlSessionFactory
publicUserDaoImpl(SqlSessionFactory sqlSessionFactory){
this.setSqlSessionFactory(sqlSessionFactory);
}
private SqlSessionFactorysqlSessionFactory;
@Override
public User getUserById(int id)throws Exception {
SqlSession session = sqlSessionFactory.openSession();
User user = null;
try {
//通过sqlsession调用selectOne方法获取一条结果集
//参数1:指定定义的statement的id,参数2:指定向statement中传递的参数
user = session.selectOne("test.findUserById", 1);
System.out.println(user);
} finally{
session.close();
}
return user;
}
@Override
Public void insertUser(User user)throws Exception {
SqlSession sqlSession =sqlSessionFactory.openSession();
try {
sqlSession.insert("insertUser", user);
sqlSession.commit();
} finally{
session.close();
}
}
}
测试类
*
* @author 杨 2015 7 21
*
*/
public class UserDaoImplTest {
private SqlSessionFactory sqlSessionFactory;
@Before
public void setUp() throws Exception{
// TODO Auto-generated method stub
String resource="SqlMapConfig.xml";
InputStream inputStream=Resources.getResourceAsStream(resource);
//创建会话工厂 传入mybatis的配置文件信息
sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
//通过工厂得到SqlSession
}
@Test
public void testFindUserById() throws Exception{
UserDao userDao=new UserDaoImpl(sqlSessionFactory);
//userDao.deleteUser(28);
User user=userDao.findUserById(30);
System.out.println(user);
}
}
问题
原始Dao开发中存在以下问题:
u Dao方法体存在重复代码:通过SqlSessionFactory创建SqlSession,调用SqlSession的数据库操作方法
u 调用sqlSession的数据库操作方法需要指定statement的id,这里存在硬编码,不得于开发维护。
- mybatis的dao接口实现小结
- MyBatis Dao接口没有实现类的源码实现
- mybatis Dao 接口 没有实现类的源码实现
- Mybatis学习(九)mybatis原始dao接口与dao实现的开发。
- mybatis源码学习--spring+mybatis注解方式为什么mybatis的dao接口不需要实现类
- mybatis源码学习--spring+mybatis注解方式为什么mybatis的dao接口不需要实现类
- mybatis源码学习--spring+mybatis注解方式为什么mybatis的dao接口不需要实现类
- Mybatis Mapper动态代理方法 即 只写Dao接口 不谢Dao的实现类
- Mybatis Mapper动态代理方法 即 只写Dao接口 不写Dao的实现类
- Mybatis Mapper动态代理方法 即 只写Dao接口 不写Dao的实现类
- Mybatis Mapper动态代理方法 即 只写Dao接口 不谢Dao的实现类
- mybatis泛型DAO接口的设计
- mybatis泛型DAO接口的设计
- mybatis整合spring的 泛型DAO接口
- mybatis整合spring的 泛型DAO接口
- mybatis整合spring的 泛型DAO接口
- mybatis整合spring的 泛型DAO接口
- mybatis整合spring的 泛型DAO接口
- Cocos2dx.3x入门三部曲-Hello Game项目创建(二)
- HTTP状态码(HTTP Status Code)
- codevs1051
- android自定义控件
- 欢迎使用CSDN-markdown编辑器
- mybatis的dao接口实现小结
- WPF 基础到企业应用系列5——WPF千年轮回 续前缘
- 各大推荐引擎资料汇总
- Cocos2dx.3x入门三部曲-Hello Game项目解析(三)
- ubuntu12.04管理员账户登录不了桌面,只能客人会话登录
- Android学习笔记之——Notification.Builder类的用法
- a+b 4
- POJ 3250 Bad Hair Day(单调栈)
- oracle中带有特殊符号的模糊查询