欢迎分享,转载请注明来源:内存溢出
Mybatis知识day02 CRUD *** 作
一、基于代理 Dao 实现 CRUD *** 作
1.1 mybatis 环境搭建步骤:
第一步:创建 maven 工程
第二步:导入坐标
第三步:编写必要代码(实体类和持久层接口)
第四步:编写 SqlMapConfig.xml
第五步:编写映射配置文件
第六步:编写测试类
1.2 查询 *** 作
1.2.1 在持久层接口IUserDao中添加 findById 方法:
User findById(Integer userId);
1.2.2 在用户的映射配置文件IUserDao.xml中配置:
参数说明:
resultType属性: 用于指定结果集的类型。
parameterType 属性: 用于指定传入参数的类型。
sql 语句中使用#{}字符: 它代表占位符,相当于原来 jdbc 部分所学的?,都是用于执行语句时替换实际的数据。 具体的数据是由#{}里面的内容决定的。
1.2.3 在测试类中添加测试:
1.3 保存 *** 作
1.3.1 在持久层接口IUserDao中添加方法:
int saveUser(User user);
1.3.2 在用户的映射配置文件IUserDao.xml中配置:
参数说明:
parameterType 属性: 代表参数的类型,因为我们要传入的是一个类的对象,所以类型就写类的全名称。
#{}中内容的写法: 由于我们保存方法的参数是 一个 User 对象,此处要写 User 对象中的属性名称。 它用的是 ognl 表达式。
ognl 表达式: 它是 apache 提供的一种表达式语言,全称是: Object Graphic Navigation Language 对象图导航语言,它是按照一定的语法格式来获取数据的。 语法格式就是使用 #{对象.对象}的方式。
#{user.username}它会先去找 user 对象,然后在 user 对象中找到 username 属性,并调用 getUsername()方法把值取出来。但是我们在 parameterType 属性上指定了实体类名称,所以可以省略 user. 而直接写 username。
1.3.3 添加测试类中的测试方法:
1.3.4 问题扩展:新增用户 id 的返回值: 新增用户后,同时还要返回当前新增用户的 id 值,因为 id 是由数据库的自动增长来实现的,所以就相当于我们要在新增后将自动增长 auto_increment 的值返回。
1.4 更新 *** 作
1.4.1 在持久层接口中添加更新方法:
int updateUser(User user);
1.4.2 在用户的映射配置文件中配置:
1.4.3 加入更新的测试方法:
1.5 删除 *** 作:
1.5.1 在持久层接口中添加删除方法:
int deleteUser(Integer userId);
1.5.2 在用户的映射配置文件中配置:
1.5.3 加入删除的测试方法:
1.6 模糊查询 *** 作:
1.6.1 在持久层接口中添加模糊查询方法:
List findByName(String username);
1.6.2 在用户的映射配置文件中配置:
1.6.3 加入模糊查询的测试方法:
我们在配置文件中没有加入%来作为模糊查询的条件,所以在传入字符串实参时,就需要给定模糊查询的标识%。配置文件中的#{username}也只是一个占位符,所以 SQL 语句显示为“?”
1.6.4 模糊查询的另一种配置方式:
1.6.5 #{}与${}的区别:
#{}表示一个占位符号:通过#{}可以实现preparedStatement向占位符中设置值,自动进行 java 类型和 jdbc 类型转换, #{}可以有效防止 sql 注入。 #{}可以接收简单类型值或 pojo 属性值。 如果parameterType 传输单个简单类型值,#{}括号中可以是 value 或其它名称。
${}表示拼接sql 串,通过${}可以将parameterType传入的内容拼接在sql中且不进行 jdbc类型转换, ${}可以接收简单类型值或pojo属性值,如果parameterType传输单个简单类型值,${}括号中只能是value。
1.7 查询使用聚合函数查询总记录数:
1.7.1 在持久层接口中添加模糊查询方法:
int findTotal();
1.7.2 在用户的映射配置文件中配置:
1.7.3 加入聚合查询的测试方法
1.8 Mybatis 与 JDBC 编程的比较:
1、数据库链接创建、释放频繁造成系统资源浪费从而影响系统性能,如果使用数据库链接池可解决此问题。
解决: 在 SqlMapConfig.xml 中配置数据链接池,使用连接池管理数据库链接。 2、
2、Sql 语句写在代码中造成代码不易维护,实际应用 sql 变化的可能较大,sql 变动需要改变 java 代码。
解决: 将 Sql 语句配置在 XXXXmapper.xml 文件中与 java 代码分离。
3、向 sql 语句传参数麻烦,因为 sql 语句的 where 条件不一定,可能多也可能少,占位符需要和参数对应。
解决: Mybatis 自动将 java 对象映射至 sql 语句,通过 statement 中的 parameterType 定义输入参数的 类型。
4.对结果集解析麻烦,sql 变化导致解析代码变化,且解析前需要遍历,如果能将数据库记录封装成 pojo 对 象解析比较方便。
解决: Mybatis 自动将 sql 执行结果映射至 java 对象,通过 statement 中的 resultType 定义输出结果的 类型。
二、SqlMapConfig.xml配置文件
2.1 SqlMapConfig.xml 中配置的内容和顺序:
2.2 properties(属性)
2.2.1 在使用 properties 标签配置时,我们可以采用两种方式指定属性配置:
第一种就是在xml文件中配置
第二种在classpath下定义db.properties文件:
2.2.2 properties 标签配置:
2.3 typeAliases(类型别名)
2.3.1 自定义别名:
赞
(0)
打赏
微信扫一扫
支付宝扫一扫
改名、博客重开
上一篇
2022-11-14
计算机毕业设计之 [含源码等]jsp+ssm+mysql实现的租车车辆管理系统汽车租赁[包运行成功]
下一篇
2022-11-14
评论列表(0条)