超详细的Mybatis注解开发整理(一)

Mybatis注解开发

 

mybatis的常用注解

注解说明
@Insert实现新增
@Delete实现删除
@Update实现更新
@Select实现查询
@Result实现结果集封装
@Results可以与@Result 一起使用,封装多个结果集
@ResultMap实现引用@Results 定义的封装
@One实现一对一结果集封装
@Many实现一对多结果集封装
@SelectProvider实现动态 SQL 映射
@CacheNamespace实现注解二级缓存的使用

使用 Mybatis 注解实现基本 CRUD

项目目录结构

在这里插入图片描述

编写实体类

User:

<span style="color:#000000"><code class="language-java"><span style="color:#c678dd">package</span> com<span style="color:#999999">.</span>keafmd<span style="color:#999999">.</span>domain<span style="color:#999999">;</span>

<span style="color:#c678dd">import</span> java<span style="color:#999999">.</span>io<span style="color:#999999">.</span>Serializable<span style="color:#999999">;</span>
<span style="color:#c678dd">import</span> java<span style="color:#999999">.</span>util<span style="color:#999999">.</span>Date<span style="color:#999999">;</span>

<span style="color:#5c6370">/**
 * Keafmd
 *
 * @ClassName: User
 * @Description: User实体类
 * @author: 牛哄哄的柯南
 * @date: 2021-02-16 20:28
 */</span>
<span style="color:#c678dd">public</span> <span style="color:#c678dd">class</span> User <span style="color:#c678dd">implements</span> Serializable <span style="color:#999999">{</span>
    <span style="color:#c678dd">private</span> Integer id<span style="color:#999999">;</span>
    <span style="color:#c678dd">private</span> String username<span style="color:#999999">;</span>
    <span style="color:#c678dd">private</span> String address<span style="color:#999999">;</span>
    <span style="color:#c678dd">private</span> String sex<span style="color:#999999">;</span>
    <span style="color:#c678dd">private</span> Date birthday<span style="color:#999999">;</span>

    <span style="color:#c678dd">public</span> Integer <span style="color:#61aeee">getId</span><span style="color:#999999">(</span><span style="color:#999999">)</span> <span style="color:#999999">{</span>
        <span style="color:#c678dd">return</span> id<span style="color:#999999">;</span>
    <span style="color:#999999">}</span>

    <span style="color:#c678dd">public</span> <span style="color:#c678dd">void</span> <span style="color:#61aeee">setId</span><span style="color:#999999">(</span>Integer id<span style="color:#999999">)</span> <span style="color:#999999">{</span>
        <span style="color:#c678dd">this</span><span style="color:#999999">.</span>id <span style="color:#669900">=</span> id<span style="color:#999999">;</span>
    <span style="color:#999999">}</span>

    <span style="color:#c678dd">public</span> String <span style="color:#61aeee">getUsername</span><span style="color:#999999">(</span><span style="color:#999999">)</span> <span style="color:#999999">{</span>
        <span style="color:#c678dd">return</span> username<span style="color:#999999">;</span>
    <span style="color:#999999">}</span>

    <span style="color:#c678dd">public</span> <span style="color:#c678dd">void</span> <span style="color:#61aeee">setUsername</span><span style="color:#999999">(</span>String username<span style="color:#999999">)</span> <span style="color:#999999">{</span>
        <span style="color:#c678dd">this</span><span style="color:#999999">.</span>username <span style="color:#669900">=</span> username<span style="color:#999999">;</span>
    <span style="color:#999999">}</span>

    <span style="color:#c678dd">public</span> String <span style="color:#61aeee">getAddress</span><span style="color:#999999">(</span><span style="color:#999999">)</span> <span style="color:#999999">{</span>
        <span style="color:#c678dd">return</span> address<span style="color:#999999">;</span>
    <span style="color:#999999">}</span>

    <span style="color:#c678dd">public</span> <span style="color:#c678dd">void</span> <span style="color:#61aeee">setAddress</span><span style="color:#999999">(</span>String address<span style="color:#999999">)</span> <span style="color:#999999">{</span>
        <span style="color:#c678dd">this</span><span style="color:#999999">.</span>address <span style="color:#669900">=</span> address<span style="color:#999999">;</span>
    <span style="color:#999999">}</span>

    <span style="color:#c678dd">public</span> String <span style="color:#61aeee">getSex</span><span style="color:#999999">(</span><span style="color:#999999">)</span> <span style="color:#999999">{</span>
        <span style="color:#c678dd">return</span> sex<span style="color:#999999">;</span>
    <span style="color:#999999">}</span>

    <span style="color:#c678dd">public</span> <span style="color:#c678dd">void</span> <span style="color:#61aeee">setSex</span><span style="color:#999999">(</span>String sex<span style="color:#999999">)</span> <span style="color:#999999">{</span>
        <span style="color:#c678dd">this</span><span style="color:#999999">.</span>sex <span style="color:#669900">=</span> sex<span style="color:#999999">;</span>
    <span style="color:#999999">}</span>

    <span style="color:#c678dd">public</span> Date <span style="color:#61aeee">getBirthday</span><span style="color:#999999">(</span><span style="color:#999999">)</span> <span style="color:#999999">{</span>
        <span style="color:#c678dd">return</span> birthday<span style="color:#999999">;</span>
    <span style="color:#999999">}</span>

    <span style="color:#c678dd">public</span> <span style="color:#c678dd">void</span> <span style="color:#61aeee">setBirthday</span><span style="color:#999999">(</span>Date birthday<span style="color:#999999">)</span> <span style="color:#999999">{</span>
        <span style="color:#c678dd">this</span><span style="color:#999999">.</span>birthday <span style="color:#669900">=</span> birthday<span style="color:#999999">;</span>
    <span style="color:#999999">}</span>

    <span style="color:#999999">@Override</span>
    <span style="color:#c678dd">public</span> String <span style="color:#61aeee">toString</span><span style="color:#999999">(</span><span style="color:#999999">)</span> <span style="color:#999999">{</span>
        <span style="color:#c678dd">return</span> <span style="color:#669900">"User{"</span> <span style="color:#669900">+</span>
                <span style="color:#669900">"id="</span> <span style="color:#669900">+</span> id <span style="color:#669900">+</span>
                <span style="color:#669900">", username='"</span> <span style="color:#669900">+</span> username <span style="color:#669900">+</span> <span style="color:#669900">'\''</span> <span style="color:#669900">+</span>
                <span style="color:#669900">", address='"</span> <span style="color:#669900">+</span> address <span style="color:#669900">+</span> <span style="color:#669900">'\''</span> <span style="color:#669900">+</span>
                <span style="color:#669900">", sex='"</span> <span style="color:#669900">+</span> sex <span style="color:#669900">+</span> <span style="color:#669900">'\''</span> <span style="color:#669900">+</span>
                <span style="color:#669900">", birthday="</span> <span style="color:#669900">+</span> birthday <span style="color:#669900">+</span>
                <span style="color:#669900">'}'</span><span style="color:#999999">;</span>
    <span style="color:#999999">}</span>
<span style="color:#999999">}</span>
</code></span>

使用注解方式开发持久层接口

IUserDao:

<span style="color:#000000"><code class="language-java"><span style="color:#c678dd">package</span> com<span style="color:#999999">.</span>keafmd<span style="color:#999999">.</span>dao<span style="color:#999999">;</span>

<span style="color:#c678dd">import</span> com<span style="color:#999999">.</span>keafmd<span style="color:#999999">.</span>domain<span style="color:#999999">.</span>User<span style="color:#999999">;</span>
<span style="color:#c678dd">import</span> org<span style="color:#999999">.</span>apache<span style="color:#999999">.</span>ibatis<span style="color:#999999">.</span>annotations<span style="color:#999999">.</span>Delete<span style="color:#999999">;</span>
<span style="color:#c678dd">import</span> org<span style="color:#999999">.</span>apache<span style="color:#999999">.</span>ibatis<span style="color:#999999">.</span>annotations<span style="color:#999999">.</span>Insert<span style="color:#999999">;</span>
<span style="color:#c678dd">import</span> org<span style="color:#999999">.</span>apache<span style="color:#999999">.</span>ibatis<span style="color:#999999">.</span>annotations<span style="color:#999999">.</span>Select<span style="color:#999999">;</span>
<span style="color:#c678dd">import</span> org<span style="color:#999999">.</span>apache<span style="color:#999999">.</span>ibatis<span style="color:#999999">.</span>annotations<span style="color:#999999">.</span>Update<span style="color:#999999">;</span>

<span style="color:#c678dd">import</span> java<span style="color:#999999">.</span>util<span style="color:#999999">.</span>List<span style="color:#999999">;</span>

<span style="color:#5c6370">/**
 * Keafmd
 *
 * @ClassName: IUserDao
 * @Description:
 * @author: 牛哄哄的柯南
 * @date: 2021-02-16 20:30
 */</span>

<span style="color:#5c6370">/**
 * 在mybatis中针对CRUD一共有四个注解
 * @Select @Insert @Update @Delete
 */</span>
<span style="color:#c678dd">public</span> <span style="color:#c678dd">interface</span> IUserDao <span style="color:#999999">{</span>

    <span style="color:#5c6370">/**
     * 查询所有用户
     * @return
     */</span>
    <span style="color:#999999">@Select</span><span style="color:#999999">(</span><span style="color:#669900">"select * from user"</span><span style="color:#999999">)</span>
    List<span style="color:#61aeee"><span style="color:#999999"><</span>User<span style="color:#999999">></span></span> <span style="color:#61aeee">findAll</span><span style="color:#999999">(</span><span style="color:#999999">)</span><span style="color:#999999">;</span>

    <span style="color:#5c6370">/**
     * 保存用户
     * @param user
     */</span>
    <span style="color:#999999">@Insert</span><span style="color:#999999">(</span><span style="color:#669900">"insert into user(username,address,sex,birthday)values(#{username},#{address},#{sex},#{birthday})"</span><span style="color:#999999">)</span>
    <span style="color:#c678dd">void</span> <span style="color:#61aeee">saveUser</span><span style="color:#999999">(</span>User user<span style="color:#999999">)</span><span style="color:#999999">;</span>

    <span style="color:#5c6370">/**
     * 更新用户
     * @param user
     */</span>
    <span style="color:#999999">@Update</span><span style="color:#999999">(</span><span style="color:#669900">"update user set username=#{username},sex=#{sex},birthday=#{birthday},address=#{address} where id=#{id}"</span><span style="color:#999999">)</span>
    <span style="color:#c678dd">void</span> <span style="color:#61aeee">updateUser</span><span style="color:#999999">(</span>User user<span style="color:#999999">)</span><span style="color:#999999">;</span>

    <span style="color:#5c6370">/**
     * 删除用户
     * @param userId
     */</span>
    <span style="color:#999999">@Delete</span><span style="color:#999999">(</span><span style="color:#669900">"delete from user where id=#{id}"</span><span style="color:#999999">)</span>
    <span style="color:#c678dd">void</span> <span style="color:#61aeee">deleteUser</span><span style="color:#999999">(</span>Integer userId<span style="color:#999999">)</span><span style="color:#999999">;</span>

    <span style="color:#5c6370">/**
     * 根据id查询用户
     * @param userId
     * @return
     */</span>
    <span style="color:#999999">@Select</span><span style="color:#999999">(</span><span style="color:#669900">"select * from user where id=#{id}"</span><span style="color:#999999">)</span>
    User <span style="color:#61aeee">findById</span><span style="color:#999999">(</span>Integer userId<span style="color:#999999">)</span><span style="color:#999999">;</span>

    <span style="color:#5c6370">/**
     * 根据用户名称模糊查询
     * @param username
     * @return
     */</span>
    <span style="color:#5c6370">//@Select("select * from user where username like #{username}") //占位符</span>
    <span style="color:#999999">@Select</span><span style="color:#999999">(</span><span style="color:#669900">"select * from user where username like '%${value}%'"</span><span style="color:#999999">)</span>  <span style="color:#5c6370">//字符串拼接</span>
    List<span style="color:#61aeee"><span style="color:#999999"><</span>User<span style="color:#999999">></span></span> <span style="color:#61aeee">findByName</span><span style="color:#999999">(</span>String username<span style="color:#999999">)</span><span style="color:#999999">;</span>

    <span style="color:#5c6370">/**
     * 查询总数量
     * @return
     */</span>
    <span style="color:#999999">@Select</span><span style="color:#999999">(</span><span style="color:#669900">"select count(*) from user"</span><span style="color:#999999">)</span>
    <span style="color:#c678dd">int</span> <span style="color:#61aeee">findTotal</span><span style="color:#999999">(</span><span style="color:#999999">)</span><span style="color:#999999">;</span>

<span style="color:#999999">}</span>
</code></span>

通过注解方式,就不需要再去编写 UserDao.xml 映射文件了。

编写 SqlMapConfig.xml 配置文件

SqlMapConfig.xml:

<span style="color:#000000"><code class="language-xml"><span style="color:#5c6370"><?xml version="1.0" encoding="UTF-8"?></span>
<span style="color:#61aeee"><!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd"></span>
<span style="color:#e06c75"><span style="color:#e06c75"><span style="color:#999999"><</span>configuration</span><span style="color:#999999">></span></span>
    <span style="color:#5c6370"><!--引入外部配置文件--></span>
    <span style="color:#e06c75"><span style="color:#e06c75"><span style="color:#999999"><</span>properties</span> <span style="color:#d19a66">resource</span><span style="color:#669900"><span style="color:#999999">=</span><span style="color:#999999">"</span>jdbcConfig.properties<span style="color:#999999">"</span></span><span style="color:#999999">></span></span><span style="color:#e06c75"><span style="color:#e06c75"><span style="color:#999999"></</span>properties</span><span style="color:#999999">></span></span>
    <span style="color:#5c6370"><!--配置别名--></span>
    <span style="color:#e06c75"><span style="color:#e06c75"><span style="color:#999999"><</span>typeAliases</span><span style="color:#999999">></span></span>
        <span style="color:#e06c75"><span style="color:#e06c75"><span style="color:#999999"><</span>package</span> <span style="color:#d19a66">name</span><span style="color:#669900"><span style="color:#999999">=</span><span style="color:#999999">"</span>com.keafmd.domain<span style="color:#999999">"</span></span><span style="color:#999999">/></span></span>
    <span style="color:#e06c75"><span style="color:#e06c75"><span style="color:#999999"></</span>typeAliases</span><span style="color:#999999">></span></span>
    <span style="color:#5c6370"><!--配置环境--></span>
    <span style="color:#e06c75"><span style="color:#e06c75"><span style="color:#999999"><</span>environments</span> <span style="color:#d19a66">default</span><span style="color:#669900"><span style="color:#999999">=</span><span style="color:#999999">"</span>mysql<span style="color:#999999">"</span></span><span style="color:#999999">></span></span>
        <span style="color:#e06c75"><span style="color:#e06c75"><span style="color:#999999"><</span>environment</span> <span style="color:#d19a66">id</span><span style="color:#669900"><span style="color:#999999">=</span><span style="color:#999999">"</span>mysql<span style="color:#999999">"</span></span><span style="color:#999999">></span></span>
            <span style="color:#e06c75"><span style="color:#e06c75"><span style="color:#999999"><</span>transactionManager</span> <span style="color:#d19a66">type</span><span style="color:#669900"><span style="color:#999999">=</span><span style="color:#999999">"</span>JDBC<span style="color:#999999">"</span></span><span style="color:#999999">></span></span><span style="color:#e06c75"><span style="color:#e06c75"><span style="color:#999999"></</span>transactionManager</span><span style="color:#999999">></span></span>
            <span style="color:#e06c75"><span style="color:#e06c75"><span style="color:#999999"><</span>dataSource</span> <span style="color:#d19a66">type</span><span style="color:#669900"><span style="color:#999999">=</span><span style="color:#999999">"</span>POOLED<span style="color:#999999">"</span></span><span style="color:#999999">></span></span>
                <span style="color:#e06c75"><span style="color:#e06c75"><span style="color:#999999"><</span>property</span> <span style="color:#d19a66">name</span><span style="color:#669900"><span style="color:#999999">=</span><span style="color:#999999">"</span>driver<span style="color:#999999">"</span></span> <span style="color:#d19a66">value</span><span style="color:#669900"><span style="color:#999999">=</span><span style="color:#999999">"</span>${jdbc.driver}<span style="color:#999999">"</span></span><span style="color:#999999">></span></span><span style="color:#e06c75"><span style="color:#e06c75"><span style="color:#999999"></</span>property</span><span style="color:#999999">></span></span>
                <span style="color:#e06c75"><span style="color:#e06c75"><span style="color:#999999"><</span>property</span> <span style="color:#d19a66">name</span><span style="color:#669900"><span style="color:#999999">=</span><span style="color:#999999">"</span>url<span style="color:#999999">"</span></span> <span style="color:#d19a66">value</span><span style="color:#669900"><span style="color:#999999">=</span><span style="color:#999999">"</span>${jdbc.url}<span style="color:#999999">"</span></span><span style="color:#999999">></span></span><span style="color:#e06c75"><span style="color:#e06c75"><span style="color:#999999"></</span>property</span><span style="color:#999999">></span></span>
                <span style="color:#e06c75"><span style="color:#e06c75"><span style="color:#999999"><</span>property</span> <span style="color:#d19a66">name</span><span style="color:#669900"><span style="color:#999999">=</span><span style="color:#999999">"</span>username<span style="color:#999999">"</span></span> <span style="color:#d19a66">value</span><span style="color:#669900"><span style="color:#999999">=</span><span style="color:#999999">"</span>${jdbc.username}<span style="color:#999999">"</span></span><span style="color:#999999">></span></span><span style="color:#e06c75"><span style="color:#e06c75"><span style="color:#999999"></</span>property</span><span style="color:#999999">></span></span>
                <span style="color:#e06c75"><span style="color:#e06c75"><span style="color:#999999"><</span>property</span> <span style="color:#d19a66">name</span><span style="color:#669900"><span style="color:#999999">=</span><span style="color:#999999">"</span>password<span style="color:#999999">"</span></span> <span style="color:#d19a66">value</span><span style="color:#669900"><span style="color:#999999">=</span><span style="color:#999999">"</span>${jdbc.password}<span style="color:#999999">"</span></span><span style="color:#999999">></span></span><span style="color:#e06c75"><span style="color:#e06c75"><span style="color:#999999"></</span>property</span><span style="color:#999999">></span></span>
            <span style="color:#e06c75"><span style="color:#e06c75"><span style="color:#999999"></</span>dataSource</span><span style="color:#999999">></span></span>
        <span style="color:#e06c75"><span style="color:#e06c75"><span style="color:#999999"></</span>environment</span><span style="color:#999999">></span></span>
    <span style="color:#e06c75"><span style="color:#e06c75"><span style="color:#999999"></</span>environments</span><span style="color:#999999">></span></span>
    <span style="color:#5c6370"><!--指定带有注解的dao接口所在位置--></span>
    <span style="color:#e06c75"><span style="color:#e06c75"><span style="color:#999999"><</span>mappers</span><span style="color:#999999">></span></span>
        <span style="color:#e06c75"><span style="color:#e06c75"><span style="color:#999999"><</span>package</span> <span style="color:#d19a66">name</span><span style="color:#669900"><span style="color:#999999">=</span><span style="color:#999999">"</span>com.keafmd.dao<span style="color:#999999">"</span></span><span style="color:#999999">></span></span><span style="color:#e06c75"><span style="color:#e06c75"><span style="color:#999999"></</span>package</span><span style="color:#999999">></span></span>
    <span style="color:#e06c75"><span style="color:#e06c75"><span style="color:#999999"></</span>mappers</span><span style="color:#999999">></span></span>
<span style="color:#e06c75"><span style="color:#e06c75"><span style="color:#999999"></</span>configuration</span><span style="color:#999999">></span></span>
</code></span>

编写测试代码

AnnotationCRUDTest:

<span style="color:#000000"><code class="language-java"><span style="color:#c678dd">package</span> com<span style="color:#999999">.</span>keafmd<span style="color:#999999">.</span>test<span style="color:#999999">;</span>

<span style="color:#c678dd">import</span> com<span style="color:#999999">.</span>keafmd<span style="color:#999999">.</span>dao<span style="color:#999999">.</span>IUserDao<span style="color:#999999">;</span>
<span style="color:#c678dd">import</span> com<span style="color:#999999">.</span>keafmd<span style="color:#999999">.</span>domain<span style="color:#999999">.</span>User<span style="color:#999999">;</span>
<span style="color:#c678dd">import</span> org<span style="color:#999999">.</span>apache<span style="color:#999999">.</span>ibatis<span style="color:#999999">.</span>io<span style="color:#999999">.</span>Resources<span style="color:#999999">;</span>
<span style="color:#c678dd">import</span> org<span style="color:#999999">.</span>apache<span style="color:#999999">.</span>ibatis<span style="color:#999999">.</span>session<span style="color:#999999">.</span>SqlSession<span style="color:#999999">;</span>
<span style="color:#c678dd">import</span> org<span style="color:#999999">.</span>apache<span style="color:#999999">.</span>ibatis<span style="color:#999999">.</span>session<span style="color:#999999">.</span>SqlSessionFactory<span style="color:#999999">;</span>
<span style="color:#c678dd">import</span> org<span style="color:#999999">.</span>apache<span style="color:#999999">.</span>ibatis<span style="color:#999999">.</span>session<span style="color:#999999">.</span>SqlSessionFactoryBuilder<span style="color:#999999">;</span>
<span style="color:#c678dd">import</span> org<span style="color:#999999">.</span>junit<span style="color:#999999">.</span>After<span style="color:#999999">;</span>
<span style="color:#c678dd">import</span> org<span style="color:#999999">.</span>junit<span style="color:#999999">.</span>Before<span style="color:#999999">;</span>
<span style="color:#c678dd">import</span> org<span style="color:#999999">.</span>junit<span style="color:#999999">.</span>Test<span style="color:#999999">;</span>

<span style="color:#c678dd">import</span> java<span style="color:#999999">.</span>io<span style="color:#999999">.</span>InputStream<span style="color:#999999">;</span>
<span style="color:#c678dd">import</span> java<span style="color:#999999">.</span>util<span style="color:#999999">.</span>Date<span style="color:#999999">;</span>
<span style="color:#c678dd">import</span> java<span style="color:#999999">.</span>util<span style="color:#999999">.</span>List<span style="color:#999999">;</span>

<span style="color:#5c6370">/**
 * Keafmd
 *
 * @ClassName: AnnotationCRUDTest
 * @Description: 注解开发CRUD测试
 * @author: 牛哄哄的柯南
 * @date: 2021-02-16 21:05
 */</span>
<span style="color:#c678dd">public</span> <span style="color:#c678dd">class</span> AnnotationCRUDTest <span style="color:#999999">{</span>
    <span style="color:#c678dd">private</span> InputStream in<span style="color:#999999">;</span>
    <span style="color:#c678dd">private</span> SqlSessionFactory factory<span style="color:#999999">;</span>
    <span style="color:#c678dd">private</span> SqlSession session<span style="color:#999999">;</span>
    <span style="color:#c678dd">private</span> IUserDao userDao<span style="color:#999999">;</span>

    <span style="color:#999999">@Before</span>
    <span style="color:#c678dd">public</span> <span style="color:#c678dd">void</span> <span style="color:#61aeee">init</span><span style="color:#999999">(</span><span style="color:#999999">)</span> <span style="color:#c678dd">throws</span> Exception<span style="color:#999999">{</span>
        in <span style="color:#669900">=</span> Resources<span style="color:#999999">.</span><span style="color:#61aeee">getResourceAsStream</span><span style="color:#999999">(</span><span style="color:#669900">"SqlMapConfig.xml"</span><span style="color:#999999">)</span><span style="color:#999999">;</span>
        factory <span style="color:#669900">=</span> <span style="color:#c678dd">new</span> SqlSessionFactoryBuilder<span style="color:#999999">(</span><span style="color:#999999">)</span><span style="color:#999999">.</span><span style="color:#61aeee">build</span><span style="color:#999999">(</span>in<span style="color:#999999">)</span><span style="color:#999999">;</span>
        session <span style="color:#669900">=</span> factory<span style="color:#999999">.</span><span style="color:#61aeee">openSession</span><span style="color:#999999">(</span><span style="color:#999999">)</span><span style="color:#999999">;</span>
        userDao <span style="color:#669900">=</span> session<span style="color:#999999">.</span><span style="color:#61aeee">getMapper</span><span style="color:#999999">(</span>IUserDao<span style="color:#999999">.</span><span style="color:#c678dd">class</span><span style="color:#999999">)</span><span style="color:#999999">;</span>
    <span style="color:#999999">}</span>

    <span style="color:#999999">@After</span>
    <span style="color:#c678dd">public</span> <span style="color:#c678dd">void</span> <span style="color:#61aeee">destory</span><span style="color:#999999">(</span><span style="color:#999999">)</span> <span style="color:#c678dd">throws</span> Exception<span style="color:#999999">{</span>
        session<span style="color:#999999">.</span><span style="color:#61aeee">commit</span><span style="color:#999999">(</span><span style="color:#999999">)</span><span style="color:#999999">;</span>
        session<span style="color:#999999">.</span><span style="color:#61aeee">close</span><span style="color:#999999">(</span><span style="color:#999999">)</span><span style="color:#999999">;</span>
        in<span style="color:#999999">.</span><span style="color:#61aeee">close</span><span style="color:#999999">(</span><span style="color:#999999">)</span><span style="color:#999999">;</span>
    <span style="color:#999999">}</span>

    <span style="color:#999999">@Test</span>
    <span style="color:#c678dd">public</span> <span style="color:#c678dd">void</span> <span style="color:#61aeee">testSave</span><span style="color:#999999">(</span><span style="color:#999999">)</span><span style="color:#999999">{</span>
        User user <span style="color:#669900">=</span> <span style="color:#c678dd">new</span> User<span style="color:#999999">(</span><span style="color:#999999">)</span><span style="color:#999999">;</span>
        user<span style="color:#999999">.</span><span style="color:#61aeee">setUsername</span><span style="color:#999999">(</span><span style="color:#669900">"mybatis annotation"</span><span style="color:#999999">)</span><span style="color:#999999">;</span>
        user<span style="color:#999999">.</span><span style="color:#61aeee">setAddress</span><span style="color:#999999">(</span><span style="color:#669900">"北京"</span><span style="color:#999999">)</span><span style="color:#999999">;</span>

        userDao<span style="color:#999999">.</span><span style="color:#61aeee">saveUser</span><span style="color:#999999">(</span>user<span style="color:#999999">)</span><span style="color:#999999">;</span>
    <span style="color:#999999">}</span>

    <span style="color:#999999">@Test</span>
    <span style="color:#c678dd">public</span> <span style="color:#c678dd">void</span> <span style="color:#61aeee">testUpdate</span><span style="color:#999999">(</span><span style="color:#999999">)</span><span style="color:#999999">{</span>
        User user <span style="color:#669900">=</span> <span style="color:#c678dd">new</span> User<span style="color:#999999">(</span><span style="color:#999999">)</span><span style="color:#999999">;</span>
        user<span style="color:#999999">.</span><span style="color:#61aeee">setId</span><span style="color:#999999">(</span><span style="color:#98c379">55</span><span style="color:#999999">)</span><span style="color:#999999">;</span>
        user<span style="color:#999999">.</span><span style="color:#61aeee">setUsername</span><span style="color:#999999">(</span><span style="color:#669900">"mybatis annotation"</span><span style="color:#999999">)</span><span style="color:#999999">;</span>
        user<span style="color:#999999">.</span><span style="color:#61aeee">setAddress</span><span style="color:#999999">(</span><span style="color:#669900">"北京"</span><span style="color:#999999">)</span><span style="color:#999999">;</span>
        user<span style="color:#999999">.</span><span style="color:#61aeee">setSex</span><span style="color:#999999">(</span><span style="color:#669900">"男"</span><span style="color:#999999">)</span><span style="color:#999999">;</span>
        user<span style="color:#999999">.</span><span style="color:#61aeee">setBirthday</span><span style="color:#999999">(</span><span style="color:#c678dd">new</span> Date<span style="color:#999999">(</span><span style="color:#999999">)</span><span style="color:#999999">)</span><span style="color:#999999">;</span>

        userDao<span style="color:#999999">.</span><span style="color:#61aeee">updateUser</span><span style="color:#999999">(</span>user<span style="color:#999999">)</span><span style="color:#999999">;</span>
    <span style="color:#999999">}</span>

    <span style="color:#999999">@Test</span>
    <span style="color:#c678dd">public</span> <span style="color:#c678dd">void</span> <span style="color:#61aeee">testDelete</span><span style="color:#999999">(</span><span style="color:#999999">)</span><span style="color:#999999">{</span>
        userDao<span style="color:#999999">.</span><span style="color:#61aeee">deleteUser</span><span style="color:#999999">(</span><span style="color:#98c379">54</span><span style="color:#999999">)</span><span style="color:#999999">;</span>
    <span style="color:#999999">}</span>

    <span style="color:#999999">@Test</span>
    <span style="color:#c678dd">public</span> <span style="color:#c678dd">void</span> <span style="color:#61aeee">testFindOne</span><span style="color:#999999">(</span><span style="color:#999999">)</span><span style="color:#999999">{</span>
        User user <span style="color:#669900">=</span> userDao<span style="color:#999999">.</span><span style="color:#61aeee">findById</span><span style="color:#999999">(</span><span style="color:#98c379">55</span><span style="color:#999999">)</span><span style="color:#999999">;</span>
        System<span style="color:#999999">.</span>out<span style="color:#999999">.</span><span style="color:#61aeee">println</span><span style="color:#999999">(</span>user<span style="color:#999999">)</span><span style="color:#999999">;</span>
    <span style="color:#999999">}</span>

    <span style="color:#999999">@Test</span>
    <span style="color:#c678dd">public</span> <span style="color:#c678dd">void</span> <span style="color:#61aeee">testFindByName</span><span style="color:#999999">(</span><span style="color:#999999">)</span><span style="color:#999999">{</span>
        <span style="color:#5c6370">//List<User> users = userDao.findByName("%Keafmd%");</span>
        List<span style="color:#61aeee"><span style="color:#999999"><</span>User<span style="color:#999999">></span></span> users <span style="color:#669900">=</span> userDao<span style="color:#999999">.</span><span style="color:#61aeee">findByName</span><span style="color:#999999">(</span><span style="color:#669900">"Keafmd"</span><span style="color:#999999">)</span><span style="color:#999999">;</span>
        <span style="color:#c678dd">for</span> <span style="color:#999999">(</span>User user <span style="color:#669900">:</span> users<span style="color:#999999">)</span> <span style="color:#999999">{</span>
            System<span style="color:#999999">.</span>out<span style="color:#999999">.</span><span style="color:#61aeee">println</span><span style="color:#999999">(</span>user<span style="color:#999999">)</span><span style="color:#999999">;</span>
        <span style="color:#999999">}</span>
    <span style="color:#999999">}</span>

    <span style="color:#999999">@Test</span>
    <span style="color:#c678dd">public</span> <span style="color:#c678dd">void</span> <span style="color:#61aeee">testFindTotal</span><span style="color:#999999">(</span><span style="color:#999999">)</span><span style="color:#999999">{</span>
       <span style="color:#c678dd">int</span> total <span style="color:#669900">=</span> userDao<span style="color:#999999">.</span><span style="color:#61aeee">findTotal</span><span style="color:#999999">(</span><span style="color:#999999">)</span><span style="color:#999999">;</span>
        System<span style="color:#999999">.</span>out<span style="color:#999999">.</span><span style="color:#61aeee">println</span><span style="color:#999999">(</span>total<span style="color:#999999">)</span><span style="color:#999999">;</span>
    <span style="color:#999999">}</span>
<span style="color:#999999">}</span>
</code></span>

使用注解实现复杂关系映射开发

实现复杂关系映射之前我们可以在映射文件中通过配置<resultMap>来实现,在使用注解开发时我们需要借助@Results 注解,@Result 注解,@One 注解,@Many 注解。

复杂关系映射的注解说明

@Results 注解
代替的是标签<resultMap>
该注解中可以使用单个@Result 注解,也可以使用@Result 集合
@Results({@Result(),@Result()})或@Results(@Result())

@Resutl 注解
代替了<id> 标签和<result>标签
@Result 中的属性介绍:

@Result 中的属性介绍
id是否是主键字段
column数据库的列名
property需要装配的属性名
one需要使用的@One 注解(@Result(one=@One)()))
many需要使用的@Many 注解(@Result(many=@many)()))

@One 注解(一对一)
代替了<assocation>标签,是多表查询的关键,在注解中用来指定子查询返回单一对象。
@One 注解属性介绍:
select 指定用来多表查询的 sqlmapper
fetchType 会覆盖全局的配置参数 lazyLoadingEnabled。
使用格式:@Result(column=" “,property=”",one=@One(select=""))

@Many 注解(多对一)
代替了<collection>标签,是是多表查询的关键,在注解中用来指定子查询返回对象集合。
注意:聚集元素用来处理“一对多”的关系。需要指定映射的 Java 实体类的属性,属性的 javaType(一般为 ArrayList)但是注解中可以不定义。
使用格式:@Result(property="",column="",many=@Many(select=""))

项目目录

在这里插入图片描述

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值