复习之MyBatis基础用法(一)——XML映射文件

简介

什么是 MyBatis ?

MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手工设置参数以及抽取结果集。MyBatis 使用简单的 XML 或注解来配置和映射基本体,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

注意

使用mybatis接口模式方法不能重载 类模式可以重载
但开发都是接口模式 id=方法名

  • 类模式

//增删改是有事物的 查可以说没有
//MyBatis默认是执行SQL语句之前是写了begin的
//MyBatis默认是是手动提交,那就需要显示的写代码提交

sqlSession.commit();

Mapper XML 文件

MyBatis 的真正强大在于它的映射语句,也是它的魔力所在。由于它的异常强大,映射器的 XML 文件就显得相对简单。如果拿它跟具有相同功能的 JDBC 代码进行对比,你会立即发现省掉了将近 95% 的代码。MyBatis 就是针对 SQL 构建的,并且比普通的方法做的更好。

文档类型声明

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

SQL 映射文件有很少的几个顶级元素

  • mapper namespace="" 命名空间=包名.类名
<mapper namespace ="top.maniy.mapper.PhotoMapper">
  • cache – 给定命名空间的缓存配置。
  • cache-ref – 其他命名空间缓存配置的引用。
    (mybatis的缓存一般很少用)

如果接口参数是对象,sql语句中的#{name}需要和对象属性名一致

  • insert – 映射插入语句
<!--增删改返回值都是int,所有resultType="int" ,但是增删改的resultType可以不写-->
<!-- 处理主键的生成<insert id="insertAuthor" useGeneratedKeys="true"
    keyProperty="id">
 -->
    <insert id="saveUser" parameterType="top.maniy.mybatisdemo.entity.User">
        insert into e_user(username,address) values (#{username},#{address})
    </insert>
  • update – 映射更新语句
   <update id="updateUserByMap">
        update e_user set username=#{username} WHERE id=#{id}
    </update>
  • delete – 映射删除语句
<delete id="deleteUserByUserId">
        DELETE from e_user where id=#{id}
    </delete>
  • select – 映射查询语句
<!-- 查询总数 -->
    <select id="count" resultType="int">
        SELECT COUNT(*) FROM e_user
    </select>
<!-- 查询表全部数据  返回的是List集合 resultType是集合包含的类型 -->
<select id="getAllUserList" resultType="top.maniy.mybatisdemo.entity.User">
        SELECT * FROM e_user
    </select>

SqlMapConfig.xml配置别名 就可以直接写类名

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
	<!-- 别名 -->
	<typeAliases>
		<package name="top.maniy.entity"/>
	</typeAliases>
</configuration>
  • sql – 可被其他语句引用的可重用语句块。
<sql id="selectAll">
	SELECT * FROM photo
</sql>
<!-- sql可以把经常使用的重复语句块提出来-->
<!-- 用include 引入 -->
	<select id="getPhotosByAlbumId" resultType="Photo">
		  <include refid="selectAll"></include>
		 WHERE albumid=#{albumid}
	</select>

parameterType无论在什么情况下,增删改查中都可以不写

Mapper XML中标签有多个参数且不是一个对象中需要接口加@Param

//接口方法有多个参数的时候,需要使用@Param注解给形参取名字,名字可以随便取,但是最好只能用参取名字
  User getUserByUsernameAndPassword(@Param("username") String username,@Param("password") String password);
    <select id="getUserByUsernameAndPassword" resultType="top.maniy.mybatisdemo.entity.User">
        SELECT * FROM  e_user WHERE username=#{username} AND address=#{password}
    </select>

MyBatis参数解析(附带模糊查询两中写法)

<!-- 根据用户名模糊查询用户列表
   #{} 占位符          #{1}=‘1’
   ${} 字符串拼接   ${1}=1  '%${value}%'
   
     -->

 <!-- MyBatis里面传参数,#表示用的preparedstatement
                       $表示用的statement
                       因此模糊查询可以多种写法
                       /* SELECT * from e_user where username  LIKE  concat('%',#{username},'%')*/
  -->
    <select id="getUserListLikeUserName"  resultType="top.maniy.mybatisdemo.entity.User">
      SELECT * from e_user where username  LIKE '%${username}%'


    </select>
  • resultMap – 是最复杂也是最强大的元素,用来描述如何从数据库结果集中来加载对象。

  • parameterMap – 已废弃!老式风格的参数映射。内联参数是首选,这个元素可能在将来被移除。

resultMap下篇详解

猜你喜欢

转载自blog.csdn.net/IManiy/article/details/82928482
今日推荐