Mybatis知识day02 CRUD *** 作

Mybatis知识day02 CRUD *** 作,第1张

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 自定义别名:

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4997184.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-14
下一篇 2022-11-14

发表评论

登录后才能评论

评论列表(0条)

保存