mybatis动态sql传参问题,求解决!

mybatis中动态sql
传入的参数是java对象的情况下,那么是如何解析对象中的name属性的

用parameter的el表达式。

MyBatis动态传参
1. Dao和Mapper的关系

在dao接口层,dao的方法名对应mapper.xml的ID

2. MyBatis如何实现动态传参 

1. 书写mapper 的SQL

2. 书写dao层,注意方法名要和mapper里的id保持一致

3. 参数数量和类型保持一致,并使用注解@Param("bookName")对应mapper的参数名

如果只有一个入参,可以不写@Param注解,但不建议

3. MyBatis的代理功能

全程公用一个SqlSessionFactory

1. 复制MyBatisUtil工具类到util包

2. 修改service配置

4. MyBatis的生命周期2

 

1. 首先加载mybatis-config.xml总配置文件,根据development的参数配置连接数据库;查询mappers映射关系,找到mapper.xml配置文件

 

2. 执行mapper.xml文件,该文件记录了运行SQL

 

3. 在dao接口层,dao的方法名对应mapper.xml的ID

 

一个表 对应 一个实体 对应 一个mapper 对应 一个dao

 

4. 在service层,通过工具类获取连接;通过代理模式(反射)获取dao接口对象

 

5. 调用dao接口方法,执行SQL语句

 

6. 关闭SqlSession

5. 插入,修改,删除示例







 

 

 

https://www.cnblogs.com/ZXDZXD/p/12522526.html

<insert id="saveEmployee" parameterType="Employee">
insert into emp values(#{employee.name},#{employee.age})
</insert>

拿插入标签来说吧。传递了一个对象,对象对应的全限定路径类名在parameterType属性中指定。
通过#{}标签来获取动态值,里面可以是字符串,对象等。
解析对象时,会通过全限定路径类名找到当前类,并通过属性名找到对应的方法。默认get+属性名首字符大写
如:getName(){}
找到属性对应的这个方法后,就能获取到对象中某个属性值了。

tableName.column = #{Object.field}

MetaObject.getValue

看你mapper中是否对参数对象添加注解,
如果有注解的话 假设注解为obj xml中就用obj.name就可以
没有注解,直接使用类的属性名name就可以