Mybatis入门实例(注解实现)(3) - SSM(三)

这里做一个补充实现,前面我们是使用的基于配置文件XML实现的,但是Mybatis其实还提供了另一种实现方式,那就是使用注解实现,所以我在这里补充一下注解的实现。

1. 代码结构


这里写图片描述

从代码结构看我们只是增加了UserDaoAnnotation.java和一个人用于测试注解的测试类TestAnnotations.java;
接下来我们就来看看我们是如何使用注解的吧。

2. 注解的使用


2.1 UserDaoAnnotation.java的实现
package com.stephen.mybatis.dao;

import org.apache.ibatis.annotations.*;

import com.stephen.mybatis.model.User;

public interface UserDaoAnnotation {

    //使用@Insert注解指明add方法要执行的SQL
    @Insert("INSERT INTO users(name, age) VALUES(#{name}, #{age})")
    @Options(useGeneratedKeys=true, keyProperty="id")
    Boolean add(User user);

    //使用@Delete注解指明deleteById方法要执行的SQL
    @Delete("DELETE FROM users WHERE id=#{id}")
    Boolean delete(Integer id);

    //使用@Update注解指明update方法要执行的SQL
    @Update("UPDATE users SET name=#{name},age=#{age} WHERE id=#{id}")
    Boolean update(User user);

    //使用@Select注解指明getById方法要执行的SQL
    @Select("SELECT * FROM users WHERE id=#{id}")
    @Results(
      {
        @Result(id = true, column = "id", property = "id"),
        @Result(column = "name", property = "name"),
        @Result(column = "age", property = "age")
      })
    User get(Integer id);
}

这就是使用注解的实现方式

2.2 注册我们的注解类到配置文件

需要在mappers下面注册我们的接口:
<mapper class="com.stephen.mybatis.dao.UserDaoAnnotation"/>
在mybatis-config.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 -->
<configuration>
    <!-- 加载配置文件
    <properties resource="jdbc.properties"></properties>
     -->

    <!-- 定义具体的别名 -->
    <typeAliases>
        <!-- 定义某个类的别名
            <typeAlias alias="User" type="com.stephen.mybatis.model.User"/>
         -->
        <!-- package这个包下的所有的实体类的别名为其类名 -->
        <package name="com.stephen.mybatis.model"/>
    </typeAliases>

    <!-- 多个环境,如开发环境,正式环境等 -->
    <environments default="development">
        <!-- 定义development环境 -->
        <environment id="development">
            <!-- 事务管理的类型JDBC和MANAGED(容器管理模式) -->
            <transactionManager type="JDBC" />

            <!-- 数据源配置
                UNPOOLED:开一个,用完后关闭
                POOLED:数据库连接池
                JNDI:JNDI的数据源
            -->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis" />
                <property name="username" value="root" />
                <property name="password" value="root" />
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <!-- 注册UserMapper.xml文件 ,所有的mapper文件需要注册到mappers中-->
        <mapper resource="com/stephen/mybatis/model/UserMapper.xml"/>
        <!-- 注册UserMapper映射接口-->
        <mapper class="com.stephen.mybatis.dao.UserDaoAnnotation"/>
     </mappers>
</configuration>
2.3 测试注解实现

测试类唯一不同的是如何获取我们的接口,当让mybatis有它的方式:
UserDaoAnnotation的对象有UserDaoAnnotation接口使用sqlSession.getMapper(UserDaoAnnotation.class)动态构建出来。

package com.stephen.mybatis;

import com.stephen.mybatis.dao.UserDaoAnnotation;
import com.stephen.mybatis.model.User;
import com.stephen.mybatis.util.MybatisUtil;

public class TestAnnotations {

    /**
     * @param args
     */
    public static void main(String[] args) {
        //得到UserDaoAnnotation接口的实现类对象,UserDaoAnnotation接口的实现类对象由
        //sqlSession.getMapper(UserDaoAnnotation.class)动态构建出来
        UserDaoAnnotation userDao =
                MybatisUtil.getSession().getMapper(UserDaoAnnotation.class);

        User user = new User();
        user.setName("Stephen Huang");
        user.setAge(18);
        userDao.add(user);
        System.out.println("add user:" + user);

        System.out.println("get user id:" + user.getId());
        System.out.println(userDao.get(user.getId()));

        user.setAge(28);
        userDao.update(user);
        System.out.println("update user age=28:" + user);

        Integer userId = user.getId();
        userDao.delete(userId);
        System.out.println("delete user id=" + userId);
        System.out.println("get deleted user: " + userDao.get(userId));

    }

}
2.4 测试结果
log4j:WARN No appenders could be found for logger (org.apache.ibatis.logging.LogFactory).
log4j:WARN Please initialize the log4j system properly.
add user:User [id=12, name=Stephen Huang, age=18]
get user id:12
User [id=12, name=Stephen Huang, age=18]
update user age=28:User [id=12, name=Stephen Huang, age=28]
delete user id=12
get deleted user: null

从我个人的爱好来看还是喜欢配置XML方式实,所以对注解还是有很多不够全面的。后面的整理我们还是使用配置xml方式。
上面只是mybatis注解的基本用法,更多的用发还需要参见其他:
这里给一个注解的使用介绍:
1. mybatis注解详解
2. 浅入浅出MyBatis(14):使用注解


GitHub代码参考下载地址

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值