使用MyBatis注解开发,可以省去类配置文件,简洁方便。但是比较复杂的SQL和动态SQL还是建议书写类配置文件。
注解还是不推荐使用的。只是了解了解!简单的CRUD可以使用注解。简单写写。
    把之前的例子改成使用注解的。
 
UserMapper.java

 package com.cy.mybatis.mapper;

 import java.util.List;
import java.util.Map; import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Options;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.ResultMap;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update; import com.cy.mybatis.beans.UserBean; public interface UserMapper {
// 简单的增删改查可以使用注解
// 注解+配置文件 /**
* 新增用戶
* @param user
* @return
* @throws Exception
*/
@Insert("insert into t_user value (null,user.username,user.password,user.account)")
@Options(useGeneratedKeys=true,keyProperty="user.id")
public int insertUser(@Param("user")UserBean user) throws Exception; /**
* 修改用戶
* @param user
* @param id
* @return
* @throws Exception
*/
@Update(" update t_user set username=#{u.username},password=#{u.password},account=#{u.account} where id=#{id}")
public int updateUser (@Param("u")UserBean user,@Param("id")int id) throws Exception; /**
* 刪除用戶
* @param id
* @return
* @throws Exception
*/
@Delete(" delete from t_user where id=#{id} ")
public int deleteUser(int id) throws Exception; /**
* 根据id查询用户信息
* @param id
* @return
* @throws Exception
*/ @Select(" select * from t_user where id=#{id}")
@Results({ @Result(id=true,property="id",column="id",javaType=Integer.class),
@Result(property="username",column="username",javaType=String.class),
@Result(property="password",column="password",javaType=String.class),
@Result(property="account",column="account",javaType=Double.class)
})
public UserBean selectUserById(int id) throws Exception;
/**
* 查询所有的用户信息
* @return
* @throws Exception
*/ @Select(" select * from t_user")
@ResultMap("userMap")
public List<UserBean> selectAllUser() throws Exception; /**
* 批量增加
* @param user
* @return
* @throws Exception
*/
public int batchInsertUser(@Param("users")List<UserBean> user) throws Exception; /**
* 批量删除
* @param list
* @return
* @throws Exception
*/
public int batchDeleteUser(@Param("list")List<Integer> list) throws Exception; /**
* 分页查询数据
* @param parma
* @return
* @throws Exception
*/
public List<UserBean> pagerUser(Map<String, Object> parmas) throws Exception; /**
*
* 分页统计数据
* @param parma
* @return
* @throws Exception
*/
public int countUser(Map<String, Object> parmas) throws Exception; }

UserMapper.xml

 <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org/DTD Mapper 3.0" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.cy.mybatis.mapper.UserMapper">
<!-- 自定义返回结果集 -->
<resultMap id="userMap" type="UserBean">
<id property="id" column="id" javaType="java.lang.Integer"></id>
<result property="username" column="username" javaType="java.lang.String"></result>
<result property="password" column="password" javaType="java.lang.String"></result>
<result property="account" column="account" javaType="java.lang.Double"></result>
</resultMap> <!-- 批量操作和foreach标签 --> <insert id="batchInsertUser" parameterType="java.util.List">
insert into t_user values
<foreach collection="users" item="users" separator=",">
(null,#{users.username},#{users.password},#{users.account})
</foreach>
</insert> <delete id="batchDeleteUser">
delete from t_user where id in (
<foreach collection="list" item="list" separator=",">
#{id}
</foreach>
)
</delete> <!--collection 为用于遍历的元素(必选),支持数组、List、Set -->
<!-- item 表示集合中每一个元素进行迭代时的别名. -->
<!--separator表示在每次进行迭代之间以什么符号作为分隔 符. --> <!--#在生成SQL时,对于字符类型参数,会拼装引号
$在生成SQL时,不会拼装引号,可用于order by之类的参数拼装
-->
<select id="pagerUser" parameterType="java.util.Map" resultMap="userMap">
select * from t_user where 1=1
<if test="username!=null">
and username like '%${username}%'
</if>
limit ${index},${pageSize}
</select> <select id="countUser" parameterType="java.util.Map" resultType="int">
select count(*) from t_user where 1=1
<if test="username != null">
and username like '%${username}%'
</if>
</select> </mapper>
 简单的一个一对一的使用注解的。
 package com.lovo.mybatis.mapper;

 import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.One;
import org.apache.ibatis.annotations.Options;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.ResultType;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select; import com.lovo.mybatis.beans.HusbandBean;
import com.lovo.mybatis.beans.WifeBean; public interface HusbandMapper { /**
* 保存丈夫
* @param husband
* @return
*/
@Insert("insert into t_husband values (null,#{h.name})")
@Options(useGeneratedKeys=true,keyProperty="h.id")
public int saveHusband(@Param("h")HusbandBean husband); /**
* 根据ID查询丈夫资料
* @param id
* @return
*/
@Select("select * from t_husband where id=#{id}")
@ResultType(HusbandBean.class)
public HusbandBean findHusbandById(int id); /**
* 根据ID查询丈夫与妻子资料
* @param id
* @return
*/
@Select("select * from t_husband where id=#{id}")
@Results({
@Result(id=true,property="id",column="id",javaType=Integer.class),
@Result(property="name",column="name",javaType=String.class),
@Result(property="wife",column="id",javaType=WifeBean.class,one=@One(select="com.lovo.mybatis.mapper.WifeMapper.findWifeByHusbandId"))
})
public HusbandBean findHusbandAndWife(int id); }
 package com.cy.mybatis.mapper;

 import org.apache.ibatis.annotations.ResultType;
import org.apache.ibatis.annotations.Select; import com.cy.mybatis.beans.WifeBean; public interface WifeMapper { @Select("select * from t_wife where fk_husband_id = #{id}")
@ResultType(WifeBean.class)
public WifeBean selectWifeByHusbandId(int id)throws Exception; }

注意:使用resultType时,一定要保证,你属性名与字段名相同;如果不相同,就使用resultMap 。

 

MyBatis学习笔记(四) 注解的更多相关文章

  1. mybatis学习笔记(四)-- 为实体类定义别名两种方法(基于xml映射)

    下面示例在mybatis学习笔记(二)-- 使用mybatisUtil工具类体验基于xml和注解实现 Demo的基础上进行优化 以新增一个用户为例子,原UserMapper.xml配置如下: < ...

  2. mybatis学习笔记四(动态sql)

    直接贴图,注解在代码上,其他的配置文件在学习一中就不贴了 1 数据库 2 实体类 package com.home.entity; /** * 此类是: 用户实体类 * @author hpc * @ ...

  3. MyBatis学习笔记(四)——解决字段名与实体类属性名不相同的冲突

    转自孤傲苍狼的博客:http://www.cnblogs.com/xdp-gacl/p/4264425.html 在平时的开发中,我们表中的字段名和表对应实体类的属性名称不一定都是完全相同的,下面来演 ...

  4. mybatis学习笔记(四)

    resultType 语句返回值类型的完整类名或别名 resultType 返回的是一个map集合,key是列名,value是对应的值 使用resultMap实现联表查询 resultMap 查询的结 ...

  5. Mybatis学习笔记(四) —— SqlMapConfig.xml配置文件

    一.properties(属性) SqlMapConfig.xml可以引用java属性文件中的配置信息 在config下定义db.properties文件,如下所示: db.properties配置文 ...

  6. mybatis学习笔记四

    记录下动态sql的常用标签: 1.where 一般用作数据操作添加的条件 例子: <select id="selectByRoleId" resultMap="re ...

  7. mybatis学习笔记(五) -- maven+spring+mybatis从零开始搭建整合详细过程(附demo和搭建过程遇到的问题解决方法)

    文章介绍结构一览 一.使用maven创建web项目 1.新建maven项目 2.修改jre版本 3.修改Project Facts,生成WebContent文件夾 4.将WebContent下的两个文 ...

  8. mybatis学习笔记(二)-- 使用mybatisUtil工具类体验基于xml和注解实现

    项目结构  基础入门可参考:mybatis学习笔记(一)-- 简单入门(附测试Demo详细过程) 开始体验 1.新建项目,新建类MybatisUtil.java,路径:src/util/Mybatis ...

  9. mybatis 学习笔记(四):mybatis 和 spring 的整合

    mybatis 学习笔记(四):mybatis 和 spring 的整合 尝试一下整合 mybatis 和 spring. 思路 spring通过单例方式管理SqlSessionFactory. sp ...

随机推荐

  1. JQuery的$(document).ready(function(){})与JS的window.onload 的各自优势!

    由于项目需要,使用JQuery也有相当一段时间了.由于经常要处理DOM节点加载.图片显示以及动态资源请求,所以对$(document).ready(function(){})理解也越来越深了,所有在此 ...

  2. AreYouBusy

    AreYouBusy Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Su ...

  3. JAVA基础知识之网络编程——-TCP/IP协议,socket通信,服务器客户端通信demo

    OSI模型分层 OSI模型是指国际标准化组织(ISO)提出的开放系统互连参考模型(Open System Interconnection Reference Model,OSI/RM),它将网络分为七 ...

  4. 在C#中怎么调用带参数的存储过程啊??

    1)执行一个没有参数的存储过程的代码如下:SqlConnection conn=new SqlConnection(“connectionString”);SqlDataAdapter da = ne ...

  5. WCF 自托管、无配置文件实现jsonp(跨域)的访问

    以下内容基于WCF4.0,本文将对比讨论配置文件方案和无配置文件方案的实现方式. WCF4.0加入了对RESTFU和标准终结点的支持,这为实现跨域提供了简单的方式. 一.有配置文件的情况: 首先我们先 ...

  6. 关于三星A7屏幕锁已由管理员、加密政策,或证书存储禁用

    解决办法:设定-安全-清除证书-再返回锁定屏幕-把密码锁定-改为滑动.....

  7. MYSQL主键自动增加的配置及auto_increment注意事项

    文章一 原文地址: http://ej38.com/showinfo/mysql-202971.html 文章二:   点击转入第二篇文章 在数据库应用,我们经常要用到唯一编号.在MySQL中可通过字 ...

  8. 关于float的说明

    关于float的说明     如图所示,蓝色的div和红色的div处于黑色的div(宽为500px)之中,其中蓝色的div设置了做浮动: 由图一(红色div的margin-top为10px,margi ...

  9. Beaglebone Black–GPIO 开关 LED(三极管与继电器实验)

    上一篇,用 GPIO 直接供电给 LED,用高低电平作开关,不靠谱.GPIO 是信号用的,不是当电源用的.而且,一个 GPIO 只能给可怜的 5mA 左右,取多了会烧(我没烧过不知道是不是真的会烧,但 ...

  10. Berkeley DB的常见API简单分析

    1.用来存储类信息的数据库不要求能够存储重复的关键字    例:    dbConfig.setSortedDuplicates(false);2.DatabaseEntrt能够支持任何能够转化为by ...