🙊🙊作者主页:🔗求不脱发的博客
📔📔 精选专栏:🔗SSM直击大厂
📋📋 精彩摘要:MyBatis 最强大的特性之一就是它的动态语句功能。如果您以前有使用JDBC或者类似框架的经历,您就会明白把SQL语句条件连接在一起是多么的痛苦,要确保不能忘记空格或者不要在columns列后面省略一个逗号等。动态语句能够完全解决掉这些痛苦。
💞💞觉得文章还不错的话欢迎大家点赞👍➕收藏⭐️➕评论💬支持博主🤞
📚目录
📖MyBatis 动态SQL
📝1️⃣Mybatis 简化Dao层
✨MyBatis原始Dao开发方式:
✨MyBatis代理开发:
📝2️⃣MyBatis动态SQL
✨揭秘MyBatis动态SQL:
✨MyBatis常用动态SQL语句:
📝3️⃣SQL片段抽取
📝4️⃣本章小结
📖MyBatis 动态SQL
📝1️⃣Mybatis 简化Dao层✨MyBatis原始Dao开发方式:
1. 编写UserDao接口
public interface UserDao {
List findAll() throws IOException;
}
2. 编写UserDaoImpl实现UserDao接口
public class UserDaoImpl implements UserDao {
public List findAll() throws IOException {
InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
List userList = sqlSession.selectList("userMapper.findAll");
sqlSession.close();
return userList;
}
}
3. 测试代码
@Test
public void testTraditionDao() throws IOException {
UserDao userDao = new UserDaoImpl();
List all = userDao.findAll();
System.out.println(all);
}
✨MyBatis代理开发:
1.什么是 MyBatis 代理开发?
对于传统dao实现方式,程序员需要自己编写dao实现类daoimpl,并实现对应的方法。这样不仅 *** 作繁琐,在企业级大项目中,代码重复度高,而且开发效率低下。
为了解决此类问题,MyBatis 框架通过Mapper代理模式开发,程序员只需要根据需求编写dao接口,然后由Mybatis 框架根据接口定义创建接口的动态代理对象,代理对象的方法体同上边Dao接口实现类方法。有效解决的传统dao开发所存在的问题。
2.代理开发方式规范
mapper接口的全限定名要和mapper映射文件的namespace值一致。mapper接口的方法名称要和mapper映射文件的statement的id一致。mapper接口的方法参数类型要和mapper映射文件的statement的parameterType的值一致,而且它的参数是一个。mapper接口的方法返回值类型要和mapper映射文件的statement的resultType的值一致。3.测试代码
@Test
public void testProxyDao() throws IOException {
InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
// 获得MyBatis框架生成的UserMapper接口的代理对象
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
User user = userMapper.findById(1);
System.out.println(user);
sqlSession.close();
}
📝2️⃣MyBatis动态SQL✨揭秘MyBatis动态SQL:
MyBatis 最强大的特性之一就是它的动态语句功能。如果您以前有使用JDBC或者类似框架的经历,您就会明白把SQL语句条件连接在一起是多么的痛苦,要确保不能忘记空格或者不要在columns列后面省略一个逗号等。动态语句能够完全解决掉这些痛苦。
尽管与动态SQL一起工作不是在开一个party,但是MyBatis确实能通过在任何映射SQL语句中使用强大的动态SQL来改进这些状况。动态SQL元素对于任何使用过JSTL或者类似于XML之类的文本处理器的人来说,都是非常熟悉的。在上一版本中,需要了解和学习非常多的元素,但在MyBatis 3 中有了许多的改进,现在只剩下差不多二分之一的元素。MyBatis使用了基于强大的OGNL表达式来消除了大部分元素。
简单来说,MyBatis简化了SQL语句的拼接 *** 作。
✨MyBatis常用动态SQL语句:
1.< where >< /where >
在执行条件查询时,当无任何查询条件时,对应SQL语句:select * from tablename
有参数时,则需要拼接到where后 :select * from tablename where ....and ...
使用< where >则可以动态的将 where .... 拼接到原SQL语句后面,有参则拼,无参则省。
2.< if test = " ">< /if >
If用于完成简单的判断。如上述代码,当test条件中 id!=0 则将 and id= #{id} 拼接SQL语句。
3.< set >< /set >
set 主要是用于解决修改 *** 作中。
update user
id = #{id},
username = #{username},
password = #{password},
where id = #{id}
4.< foreach>< /foreach>
foreach可循环执行sql的拼接 *** 作,例如:select * from user where id in(1,2,3)
foreach标签的属性 | |
collection | 代表要遍历的集合 |
open | SQL开始部分 |
close | SQL结束部分 |
item | 代表遍历集合的每个元素,生成的变量名 |
sperator | 分隔符 |
✨MyBatis常用动态SQL语句小结:
📝3️⃣SQL片段抽取
使用
select * from user
📝4️⃣本章小结Mybatis Dao实现方式 原始方式动态代理方式
Mybatis 常用动态SQL语句
Mybatis SQL片段抽取
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)