Mybatis两种开发方式
来源:互联网 发布:树洞外链美化源码 编辑:程序博客网 时间:2024/06/05 03:16
MyBatis是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架,具有的特点,避免了JDBC对数据库进行频繁连接开启和关闭造成数据库资源浪费和硬编码现象的出现。
MyBatis开发dao具有两种开发方式,原始的dao开发和mapper代理的开发方式
Dao开发方式需要dao接口和dao实现类,向dao实现类中注入SqlSessionFactory,在方法体内通过SqlSessionFactory创建SqlSession
public interface UserDao {public User findUserById(int id) throws Exception;}
public class UserDaoImpl implements UserDao {private SqlSessionFactory sqlSessionFactory;public UserDaoImpl(SqlSessionFactory sqlSessionFactory) {this.sqlSessionFactory = sqlSessionFactory;}@Overridepublic User findUserById(int id) throws Exception {SqlSession sqlSession = sqlSessionFactory.openSession();User user = sqlSession.selectOne("User.findUserById", id);sqlSession.close();return user;}}
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="User "> <select id="findUserById" parameterType="int" resultType="cn.itcast.mybatis.po.User">SELECT * FROM USER WHERE id=#{value}</select></mapper>
public class UserDaoImplTest {private SqlSessionFactory sqlSessionFactory;@Beforepublic void setUp() throws Exception {String resource = "SqlMapConfig.xml";InputStream inputStream = Resources.getResourceAsStream(resource);sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);}@Testpublic void testFindUserById() throws Exception {UserDao userDao = new UserDaoImpl(sqlSessionFactory);User user = userDao.findUserById(1);}}
Dao开发方式的局限性主要在于dao接口实现类方法中存在冗余并且存在硬编码。
mapper代理的开发方式需要mapper.xml映射文件
<mapper namespace="cn.itcast.mybatis.mapper.UserMapper"><select id="findUserList" parameterType="cn.itcast.mybatis.po.UserQueryVo" resultType="cn.itcast.mybatis.po.UserCustom">SELECT * FROM USER WHERE id=#{value}</select><mappers>
public User findUserById(int id) throws Exception;
<mappers> <mapper resource="sqlmap/User.xml"/></mappers>
@Testpublic void testFindUserById () throws Exception {SqlSession sqlSession = sqlSessionFactory.openSession();UserMapper userMapper = sqlSession.getMapper(UserMapper.class);List<User> list = userMapper.findUserById ("1");sqlSession.close();
0 0
- Mybatis两种开发方式
- MyBatis开发dao的两种方式
- mybatis 一对一的映射(两种方式)
- 使用mybatis的两种方式
- MyBatis别名的两种实现方式
- MyBatis操作数据库的两种方式
- MyBatis配置数据源的两种方式
- 【MyBatis】三种开发方式
- Mybatis开发dao两种方法
- 【mybatis基础】mybatis开发dao两种方法
- mybatis总结(4)---Mybatis 开发DAO两种方法
- MyBatis mapper.xml配置一对多的两种方式
- spring和mybatis整合的dao两种开放方式
- 常用的两种spring、mybatis 配置方式
- Mybatis XML和接口注解 两种方式CURD
- 设置Mybatis打印调试sql的两种方式
- mybatis中批量插入的两种方式(高效插入)
- 设置Mybatis打印调试sql的两种方式
- BZOJ 2631 tree LCT
- view.draw(canvas)之后view里的控件属性消失了?
- Xcode6 beta版使用问题:图片资源无法预览
- 启动应用显示LOGO再跳转页面出现问题
- BZOJ 2733 [HNOI2012] 永无乡 Treap
- Mybatis两种开发方式
- Android新手,xxx has stopped。希望有人帮我看一下日志提示的错误我应该去改哪。
- 内存操作函数memcpy,memccpy,memmove,memchr,memcmp,memicmp,memset
- Length of Last Word
- 动态生成二维数组
- ListView滾動條高度的計算
- CentOS上安装Darwin Streaming Server
- Leetcode Path Sum III
- JavaScript中“null”和“undefined”的区别