mybatis_个人总结

在使用mybatis框架开发数据访问层的过程中,我在这段时间遇到很多细节问题困住我的开发进度,它们虽然很不起眼,但是你一旦忽略它们的存在性,则可能就会让你很痛苦,在这里我来分享一下我遇到的坑。

一、mybatis动态代理方式开发的规范:

1、注意在mybatis映射配置文件中的namespace属性的值必须是mapper接口的全路径名称。

2、注意映射文件中的标签上的id的值必须和mapper 接口中的方法名称保持一致。

3、要求映射文件中传入参数的数据类型必须和mapper接口中方法上形参的数据类型保持一致。

4、要求映射文件中输出参数的数据类型必须和mapper接口中方法的返回值的数据类型保持一致。

二、使用mybatis映射文件中#{}、${}俩个符号的注意点:

1、#{},表示占位符,起到占位的作用。

如果映射文件中输入参数的数据类型是简单类型(String、double、Integer、boolean等)的数据类型时,那么占位符中的变量名称随意起。

如果映射文件中输入类型的的数据类型是pojo类型时,那么占位符中的变量名称必须是pojo对象的属性名称,如果pojo对象中的属性包含了其他对象时,则变量名称必须是属性.属性.属性......。

2、${},表示拼接符,起到字符串原样拼接的作用。

如果映射文件中的输入参数的数据类型是简单类型(String、double、Integer、boolean等)的数据类型时,那么拼接符中的变量名称必须是value。

如果映射文件中输入类型的的数据类型是pojo类型时,那么占位符中的变量名称必须是pojo对象的属性名称,如果pojo对象中的属性包含了其他对象时,则变量名称必须是属性.属性.属性......。

3、在开发中如果使用拼接符${}时,一定要注意该符号有SQL注入的风险,必须避免该问题,能替代就替代。

1 <if test="custName!=null and custName!=‘‘">
2      <!-- 【注意:这里尽量使用#{}占位符,是为了防止sql注入的问题】 -->
3      <!-- and cust_name like ‘%${custName}%‘ -->
4      and cust_name like "%"#{custName}"%"
5 </if>
时间: 2024-10-14 11:56:29

mybatis_个人总结的相关文章

Mybatis_笔记_01_逆向工程

通过Mybatis逆向工程,可以从数据库中的表自动生成pojo.mapper映射文件和mapper接口 此处暂存怎么使用逆向工程,原理以后再探讨 工程结构 要修改的地方:generatorConfig.xml配置文件中数据库信息(用户名.密码等).指定数据库表  这两个地方需要修改 代码: 1.GeneratorSqlmap.java import java.io.File; import java.io.IOException; import java.util.ArrayList; impo

mybatis_动态sql 查询、更新

1)sql where 条件 select id="find" parameterType="User" resultType="User"> select id,name, age,address from user_c where 1=1 <if test="id!=null"> and id=#{id} </if> <if test="name!=null">

mybatis_映射查询

一.一对一映射查询: 第一种方式(手动映射):借助resultType属性,定义专门的pojo类作为输出类型,其中该po类中封装了查询结果集中所有的字段.此方法较为简单,企业中使用普遍. 1 <!-- 2 [手动映射:] 3 查询用户和用户所属的订单信息: 4 定义一个包含用户和订单实体的所有属性的全pojo类,将查询结果中的所有字段和全pojo类中的属性相对应. 5 --> 6 <select id="findUserAndOrders1" resultType=&

MyBatis_关联查询

1:N dao层: 测试 N:1

MyBatis_模糊查询

like 条件

MyBatis_获取自动增长主键

Mapper.xml映射文件 测试方法

Mybatis_映射文件配置

获取自增主键的值 若数据库支持自动生成主键的字段(比如 MySQL 和 SQL Server),则可以设置 useGeneratedKeys=”true”,然后再把 keyProperty 设置到目标属性上. <insert id="addEmp" useGeneratedKeys="true" keyProperty="id"> insert into tbl_employee (last_name,email,gender) VA

MyBatis_动态SQL

一.动态SQL 动态SQL,主要用于解决查询条件不确定的情况:在程序运行期间,根据提交的查询条件进行查询. 动态SQL,即通过MyBatis提供的各种标签对条件作出判断以实现动态拼接SQL语句. 二.使用动态SQL原因 提供的查询条件不同,执行的SQL语句不同.若将每种可能的情况均逐一列出,就将出现大量的SQL语句. 三.<if/>标签 注意事项: (1) 1 @Test 2 public void test08() { 3 Student stu = new Student("明&

MyBatis_延迟加载

一.延迟加载 MyBatis中的延迟加载,也称为懒加载,是指在进行关联查询时, 按照设置延迟规则推迟对关联对象的select查询.延迟加载可以有效的减少数据库压力. MyBatis的延迟加载只是对关联对象的查询有延迟设置,对于主加载对象都是直接执行查询语句的. 二.关联对象的加载时机 MyBatis根据对关联对象查询的select语句的执行时机,分为三种类型:直接加载.侵入式延迟加载.深度延迟加载. 直接加载:执行完对主加载对象的select语句,马上执行对关联对象的select查询. 侵入式延