每日问答6

1.什么是Mybatis?

​ MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、支持普通SQL查询、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

2.#{}和${}的区别是什么?

{} 将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。相当于预处理中的占位符, 预编译、防止SQL注入

${} 将传入的数据直接显示生成在sql中,相当于拼接SQL串,对传入的值不做任何解释的原样输出会引起SQL注入,常用于:传入对象名称、表名、字段名、排序、like查询等

3.在mapper中如何传递多个参数,都有哪几种?

Map传参法

public User selectUser(Map<String, Object> params);

<select id="selectUser" parameterType="java.util.Map" resultMap="UserResultMap">
    select * from user
    where user_name = #{userName} and dept_id = #{deptId}
</select>

Java Bean传参法

public User selectUser(Map<String, Object> params);

<select id="selectUser" parameterType="com.test.User" resultMap="UserResultMap">
    select * from user
    where user_name = #{userName} and dept_id = #{deptId}
</select>

4.说出Mybatis动态标签

<IF> <WHERE> <SET> <TRIM> <FOREACH>

<CHOOSE> <WHEN> <OTHERWISE>

5.说出parameterType和resultType的区别

​ parameterType 将会传入这条语句的参数类的完全限定名或别名。这个属性是可选的,因为 MyBatis 可以通过类型处理器(TypeHandler) 推断出具体传入语句的参数,默认值为未设置(unset)。​ resultType 从这条语句中返回的期望类型的类的完全限定名或别名。 注意如果返回的是集合,那应该设置为集合包含的类型,而不是集合本身。可以使用 resultType 或 resultMap,但不能同时使用。

6.Mybatis批量删除时,如何实现?

表 user,字段 id username password

<DELETE id="removeUserById" parameterType = "java.util.List">
    DELETE FROM user WHERE id IN
    <foreach collection="list" item="id" open="(" separator="," close=")">  
        #{id}
    </foreach>
</DELETE>

7.Mybatis批量添加时,如何实现?

表 user,字段 id username password

<INSERT id="insertUser" parameterType = "java.util.List">
    INSERT INTO user ('id','username','password') VALUES
    <foreach collection="list" item="user" separator=",">   
        (DEFAULT,#{user.username},#{user.password})
    </foreach>
</INSERT>

8.添加操作自动获取主键Id

在定义xml映射器时设置属性useGeneratedKeys值为true,并分别指定属性keyProperty和keyColumn为对应的数据库记录主键字段与Java对象的主键属性

<mapper namespace="org.chench.test.mybatis.mapper">
    <!-- 插入数据:返回记录主键id值 -->
    <insert id="insertOneTest" parameterType="org.chench.test.mybatis.model.Test" 		  	  	     useGeneratedKeys="true" keyProperty="id" keyColumn="id" >
        insert into test(name,descr,url,create_time,update_time) 
        values(#{name},#{descr},#{url},now(),now())
    </insert>
</mapper>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值