mybatis注解与xml常用语句汇总

前言

MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。

本文将给大家详细介绍关于mybatis注解与xml常用语句的相关内容,下面话不多说了,来一起看看详细的介绍吧

mybatis注解使用

1.简单crud

public interface UserMapper {
 //查询
 @Select("select * from user where id=#{id}")
 User selectUser(int id);
 //查询全部
 @Select("select * from user")
 List<User> selectUserList();
 //增加数据
 @Insert("insert into user (name) values(#{name})")
 boolean insertUser(String name);
 //修改用户
 @Update("update user set name=#{name} where id=#{id}")
 boolean updateUser(@Param("name") String name,@Param("id") int id);
 //删除用户
 @Delete("delete from user where id=#{id}")
 boolean deleteUser(int id);
}

2.一对一注解

@Select("select * from user")
@Results({
 @Result(id = true,property = "id",column = "id"),//id=true 对应于主键
 @Result(property = "uid",column = "uid"),
 @Result(property = "user",column = "uid",javaType = User.class,
 one = @One(select = "com.example.dao.UserDao.findUserByid",fetchType = FetchType.DEFAULT))
 //user 对应实体类中一对一的实体类名字,uid表示通过uid外键查询User,JavaType表示查询结果
 //映射成User类型对象,one=表示一对xx fetchType.default默认是立即加载全部查询,使用lazy懒加载需要才查询
})
List<User> selectUserList();

3,一对多注解

mybatis的xml配置

1.配置resultMap

<resultMap id="BaseResultMap" type="xx" >
 <id column="id" property="ID" jdbcType="BIGINT" />
 <result column="aa" property="aa" jdbcType="VARCHAR" />
 <result column="bb" property="bb" jdbcType="INTEGER" />
 <result column="cc" property="cc" jdbcType="DECIMAL" javaType="java.math.BigDecimal" />
 <result column="dd" property="dd" jdbcType="DATE" />
</resultMap>

2.通用sql短语

 <sql id="Base_Column_List" >
 aa, bb
 </sql>

 <sql id="where">
 <trim prefix="WHERE" prefixOverrides="AND|OR">
 <if test="id != null and id != ''">
  AND t.ID = #{id}
 </if>
 <if test="content != null and content != ''">
  AND t.CONTENT LIKE concat('%', #{content},'%')
 </if>
 AND t.APP_CODE IN
 <foreach item="item" index="index" collection="appcodes"
  open="(" separator="," close=")">
  #{item}
 </foreach>
 and t.USER_ID=u.id and t.REMOVED=0
 </trim>
</sql>

3.需要验证的插入

 <insert id="insert" parameterType="xxx"
 useGeneratedKeys="true" keyColumn="id" keyProperty="id">
 insert into xxx (
 <trim suffixOverrides=",">
  <if test="title != null and title != '' ">
   TITLE ,
  </if>
 </trim>
 ) VALUES (
 <trim suffixOverrides=",">
  <if test="title != null and title != '' ">
   #{title} ,
  </if>
 </trim>
 )
</insert>

4.需要验证的更新

<update id="update" parameterType="xxx">
 UPDATE xxx
 <set>
  <if test="title != null and title != '' ">
   TITLE = #{title} ,
  </if>
 </set>
 WHERE
 ID = #{id}
</update>

5.<!--批量更新ticketid和SeatNo-->

<update id="xxxUpdate" parameterType="java.util.List">
 update xxx
 <trim prefix="set" suffixOverrides=",">
  <trim prefix="AA =case" suffix="end,">
   <foreach collection="orders" item="item" index="index">
    <if test="item.aa !=null">
     when ID=#{item.id} then #{item.aa}
    </if>
   </foreach>
  </trim>
  <trim prefix="BB =case" suffix="end,">
   <foreach collection="orders" item="item" index="index">
    <if test="item.bb !=null">
     when ID=#{item.id} then #{item.bb}
    </if>
   </foreach>
  </trim>
 </trim>
 where ID in
 <foreach collection="orders" index="index" item="item" separator="," open="(" close=")">
  #{item.id,jdbcType=BIGINT}
 </foreach>
</update>

mybatis可以使用string给数据库int类型赋值

springboot中开启日志

#mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

1.ORDER BY ${columnName}

这里 MyBatis 不会修改或转义字符串。NOTE 用这种方式接受用户的输入,并将其用于语句中的参数是不安全的,会导致潜在的 SQL 注入攻击,因此要么不允许用户输入这些字段,要么自行转义并检验。

2.如何使用连接池。

首先实例化连接池数据源对象,让他实现DataSourceFactory这个接口。然后实现方法。在mybatis。conf文件中设置数据连接池这个类,将数据库连接信息放在config.properties文件中。

3.mybatis.config文件中setting和数据源的设置参数区别

会被覆盖。

4.连接参数查询顺序

首先查询properties文件,然后查询resource文件,最后查询方法参数。重复的话会被覆盖。

5.druid连接池配置方式:

详见官网

DruidDataSourceFactory首先实行setproperties方法,然后返回设置数据源方法。drui数据源也需要在DataSource中设置properties文件

6.实体类的方法不定义也可以进行映射

7.mybatis默认是事务不提交

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对我们的支持。

(0)

相关推荐

  • Mybatis中注解@MapKey的使用详解

    mybatis的原身是ibatis,现在已经脱离了apache基金会,新官网是http://www.mybatis.org/. 在研究Mybatis源码之前并不知道这个注解的妙用的,但是当我看到参数解析的时候 有这个一个注解,所以我了解了一下,当我们返回像Map<String, Map<String, Object>>这种类型的时候,我们往往很难做到,因为这里面可能是多个表的数据,所以我们不可能再建一个模型. 这时候我们就可以使用这个注解了 @Retention(Retention

  • 详解spring+springmvc+mybatis整合注解

    每天记录一点点,慢慢的成长,今天我们学习了ssm,这是我自己总结的笔记,大神勿喷!谢谢,主要代码!! ! spring&springmvc&mybatis整合(注解) 1.jar包 2.引入web.xml文件 <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param

  • java 中MyBatis注解映射的实例详解

    java  中MyBatis注解映射的实例详解 1.普通映射 @Select("select * from mybatis_Student where id=#{id}") public Student getStudent(int id); @Insert("insert into mybatis_Student (name, age, remark, pic,grade_id,address_id) values (#{name},#{age},#{remark}, #{

  • MyBatis Generator去掉生成的注解

    是不是很讨厌mybatis Generator帮我们生成代码的时候在Mapper和mapper.xml文件中生成的一大堆注解?今天在看MyBatis Generator代码的时候发现,原来mybatis generator是提供了配置注解的能力,配置如下,在generatorConfig.xml中加上配置: <commentGenerator> <property name="suppressDate" value="true"/> <

  • Spring与Mybatis基于注解整合Redis的方法

    基于这段时间折腾redis遇到了各种问题,想着整理一下.本文主要介绍基于Spring+Mybatis以注解的形式整合Redis.废话少说,进入正题. 首先准备Redis,我下的是Windows版,下载后直接启动redis-server就行了,见下图: 一,先上jar包 二,创建实体类 package com.sl.user.vo; import java.io.Serializable; import com.fasterxml.jackson.databind.PropertyNamingSt

  • 详解spring boot mybatis全注解化

    本文重点给大家介绍spring boot mybatis 注解化的实例代码,具体内容大家参考下本文: pom.xml <!-- 引入mybatis --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.0</version

  • Spring Boot 整合 Mybatis Annotation 注解的完整 Web 案例

    前言 距离第一篇 Spring Boot 系列的博文 3 个月了.虽然 XML 形式是我比较推荐的,但是注解形式也是方便的.尤其一些小系统,快速的 CRUD 轻量级的系统. 这里感谢晓春 http://xchunzhao.tk/ 的 Pull Request,提供了 springboot-mybatis-annotation 的实现. 一.运行 springboot-mybatis-annotation 工程 然后Application 应用启动类的 main 函数,然后在浏览器访问: http

  • 详解Spring Boot集成MyBatis(注解方式)

    MyBatis是支持定制化SQL.存储过程以及高级映射的优秀的持久层框架,避免了几乎所有的JDBC代码和手动设置参数以及获取结果集.spring Boot是能支持快速创建Spring应用的Java框架.本文通过一个例子来学习Spring Boot如何集成MyBatis,而且过程中不需要XML配置. 创建数据库 本文的例子使用MySQL数据库,首先创建一个用户表,执行sql语句如下: CREATE TABLE IF NOT EXISTS user ( `id` INT(10) NOT NULL A

  • 详解SpringBoot 快速整合Mybatis(去XML化+注解进阶)

    序言:使用MyBatis3提供的注解可以逐步取代XML,例如使用@Select注解直接编写SQL完成数据查询,使用@SelectProvider高级注解还可以编写动态SQL,以应对复杂的业务需求. 一. 基础注解 MyBatis 主要提供了以下CRUD注解: @Select @Insert @Update @Delete 增删改查占据了绝大部分的业务操作,掌握这些基础注解的使用是很必要的.例如下面这段代码无需XML即可完成数据查询: @Mapper public interface UserMa

  • Mybatis 开发注解快速入门

    快速普及 1.mybatis是什么 mybatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架. MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录. Mybatis实现了接口绑定,使用更加方便. 对象关系映射的改进,效率更高 MyBatis采用功能强大的基于OGNL的表达式来

随机推荐