mybatis 学习总结一

以前时间太赶,学东西没有系统,现在回头看,好多东西当时会用记住了,问题解决了。但是现在又遇到同样的问题还是从头开始。所以现在记录到博客上,进行归纳。

以下是初步认识 dao 层 框架mybatis的基本使用。

dao层 使用jdbc 对数据进行CURD,但是

1、数据库链接创建、释放频繁造成系统资源浪费从而影响系统性能,如果使用数据库链接池可解决此问题。

2、Sql 语句在代码中硬编码,造成代码不易维护,实际应用 sql 变化的可能较大,sql 变动需要改变 java 代码。

 3、使用 preparedStatement 向占有位符号传参数存在硬编码,因为 sql 语句的 where 条件不一定,可能 多也可能少,修改 sql 还要修改代码,系统不易维护。

4、对结果集解析存在硬编码(查询列名),sql 变化导致解析代码变化,系统不易维护,如果能将数据库记 封装成 pojo 对象解析比较方便。 

下面讲解如何进行简单配置:

  • 基本思路是 : java需要的 物料

1 javaBean  提供 pojo 属性 如User.java

2 dao 接口 IUserDao 也可以写成 UserDao 或者 UserMapper

3 mapper.xml   IUserDao.xml 

要求:  

创建位置:必须和持久层接口在相同的包中。

 名称:必须以持久层接口名称命名文件名,扩展名是.xml

4 sqlMapConfig.xml

5 pom.xml 引入jar坐标

6 测试类测试

  • mysql 提供物料: 建表 提供假数据

结构图:

如果是注解式开发。相当于舍去IUserDao.xml 。而在接口的方法上加上注解和sql 语句。改 SqlMapConfig.xml 不是xml 的resource 属性,而是class 属性 。

再 对应 IUserDao.xml配置文件中编写 语句,在IUserDao.java对用方法id.

再次注意:持久层接口和持久层接口的映射配置必须在相同的包下 

下图是mybatis使用 传值参数、返回值、占位符等时候的问题

#{}  与 ${} 区别 。一个是占位符相当于JDBC 中? . 一个是固定写法,代表传入的参数的值 

使用聚合函数 max min count avg sum 

java 属性名和数据库列对应关系:

或者:建立对应关系再查询。(常用)

以下是 SqlMapConfig.xml配置文件 中:

1 typeAliases(类型别名

2 SqlMapConfig.xml 中配置的内容和顺序 

3 配置数据连接:

3.1 

3.2 或者

 db.properties 文件 和 sqlmapConfig.xml

mybatis 自带连接池。事务 自动提交默认关闭,所以前面 需要手动 session.commit();

我们也可以设置自动提交,那就是在factory.openSession( true) .

这样后面就不用手动提交了。


下面是 mybatis 特有的动态sql 处理方式,遇到复杂逻辑进行 使用。支持OGNL 和其他元素 if where foreach。。。

或者不用 1=1 

那么需要遍历指定限制的集合:用foreach 

 

发布了28 篇原创文章 · 获赞 5 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/java_utf8/article/details/104129888