1. 要想开发基于注解的MyBatis应用。需要先写一个带有注解的接口。

PersonDao.java的写法如下:

package com.rl.dao;

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.Result;

import org.apache.ibatis.annotations.ResultMap;

import org.apache.ibatis.annotations.Results;

import org.apache.ibatis.annotations.Select;

import org.apache.ibatis.annotations.SelectKey;

import org.apache.ibatis.annotations.SelectProvider;

import org.apache.ibatis.annotations.Update;

import com.rl.model1.Person;

import com.rl.util.SqlHelper;

public interface PersonDao {

@Select("select * from person t where t.person_id = #{personId}")

@Results(value={

@Result(column="person_id", property="personId", id=true),

@Result(column="name", property="name"),

@Result(column="gender", property="gender"),

@Result(column="person_addr", property="personAddr"),

@Result(column="birthday", property="birthday")

})

public Person selectPersonById(Integer personId);

@Select("select * from person")

@Results(value={

@Result(column="person_id", property="personId", id=true),

@Result(column="name", property="name"),

@Result(column="gender", property="gender"),

@Result(column="person_addr", property="personAddr"),

@Result(column="birthday", property="birthday")

})

public List<Person> selectPersonAll();

@Select("select * from person t where t.gender = #{gender} and t.birthday < #{birthday}")

@Results(value={

@Result(column="person_id", property="personId", id=true),

@Result(column="name", property="name"),

@Result(column="gender", property="gender"),

@Result(column="person_addr", property="personAddr"),

@Result(column="birthday", property="birthday")

})

public List<Person> selectPersonByParams(Map<String,Object> map);

@Select("select * from person t where t.name like '%${name}%'")

@Results(value={

@Result(column="person_id", property="personId", id=true),

@Result(column="name", property="name"),

@Result(column="gender", property="gender"),

@Result(column="person_addr", property="personAddr"),

@Result(column="birthday", property="birthday")

})

public List<Person> selectPersonByLike(Map<String,Object> map);

@Insert("insert into person (person_id, name, gender, person_addr, birthday) " +

"values(#{personId}, #{name}, #{gender}, #{personAddr}, #{birthday})")

@SelectKey(before = false, keyProperty = "personId", resultType = java.lang.Integer.class, statement = { "select LAST_INSERT_ID()" })

public void insert(Person person);

@Update("update person p set p.name = #{name}," +

"p.gender = #{gender}," +

"p.person_addr = #{personAddr}," +

"p.birthday = #{birthday} " +

"where p.person_id = #{personId}")

public void update(Person person);

@Delete("delete from person where person_id = #{personId}")

public void delete(Integer personId);

@SelectProvider(type=SqlHelper.class, method="getSql")

@Results(value={

@Result(column="person_id", property="personId", id=true),

@Result(column="name", property="name"),

@Result(column="gender", property="gender"),

@Result(column="person_addr", property="personAddr"),

@Result(column="birthday", property="birthday")

})

public List<Person> selectPersonByCondition(Map<String,Object> map);

@Select("select * from person p, orders o where p.person_id = o.person_id and p.person_id = #{personId}")

@ResultMap(value="com.rl.mapper.PersonMapper.selectPersonAndOrderByPIdRM")

public Person selectOrdersByPersonId(Integer personId);

}

测试类:

package com.rl.test;

import java.io.InputStream;

import java.text.SimpleDateFormat;

import java.util.Date;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import org.apache.ibatis.io.Resources;

import org.apache.ibatis.session.SqlSession;

import org.apache.ibatis.session.SqlSessionFactory;

import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import org.junit.Before;

import org.junit.Test;

import com.rl.dao.PersonDao;

import com.rl.model1.Person;

/**

* mybatis的注解开发

*/

public class MybatisTest6 {

SqlSessionFactory sessionFactory;

@Before

public void setUp() throws Exception {

InputStream in = Resources.getResourceAsStream("sqlMapConfig.xml");

sessionFactory = new SqlSessionFactoryBuilder().build(in);

//注册接口

sessionFactory.getConfiguration().addMapper(PersonDao.class);

}

@Test

public void selectPersonById(){

SqlSession session = sessionFactory.openSession();

//获得接口的实现类

PersonDao personDao = session.getMapper(PersonDao.class);

try {

Person person = personDao.selectPersonById(1);

System.out.println(person);

}finally{

session.close();

}

}

@Test

public void selectPersonAll(){

SqlSession session = sessionFactory.openSession();

//获得接口的实现类

PersonDao personDao = session.getMapper(PersonDao.class);

try {

List<Person> pList = personDao.selectPersonAll();

for(Person p : pList){

System.out.println(p);

}

} finally {

session.close();

}

}

@Test

public void selectPersonByParams() throws Exception {

SqlSession session = sessionFactory.openSession();

//获得接口的实现类

PersonDao personDao = session.getMapper(PersonDao.class);

Map<String,Object> map = new HashMap<String,Object>();

map.put("gender", 0);

map.put("birthday", new SimpleDateFormat("yyyy-MM-dd").parse("2014-08-08"));

try {

List<Person> pList = personDao.selectPersonByParams(map);

for(Person p : pList){

System.out.println(p);

}

} finally {

session.close();

}

}

@Test

public void selectPersonByLike() throws Exception{

SqlSession session = sessionFactory.openSession();

//获得接口的实现类

PersonDao personDao = session.getMapper(PersonDao.class);

Map<String,Object> map = new HashMap<String,Object>();

map.put("name", "安");

try {

List<Person> pList = personDao.selectPersonByLike(map);

for(Person p : pList){

System.out.println(p);

}

}finally{

session.close();

}

}

@Test

public void insert() throws Exception{

SqlSession session = sessionFactory.openSession();

//获得接口的实现类

PersonDao personDao = session.getMapper(PersonDao.class);

try {

Person p = new Person();

p.setName("西门庆");

p.setGender("0");

p.setPersonAddr("阳谷县");

p.setBirthday(new Date());

personDao.insert(p);

session.commit();

}catch(Exception ex){

ex.printStackTrace();

session.rollback();

}finally{

session.close();

}

}

@Test

public void update() throws Exception{

SqlSession session = sessionFactory.openSession();

//获得接口的实现类

PersonDao personDao = session.getMapper(PersonDao.class);

try {

Person p = new Person();

p.setPersonId(5);

p.setName("大官人");

p.setGender("0");

p.setPersonAddr("阳谷县");

p.setBirthday(new Date());

personDao.update(p);

session.commit();

}catch(Exception ex){

ex.printStackTrace();

session.rollback();

}finally{

session.close();

}

}

@Test

public void delete() throws Exception{

SqlSession session = sessionFactory.openSession();

//获得接口的实现类

PersonDao personDao = session.getMapper(PersonDao.class);

try {

personDao.delete(5);

session.commit();

}catch(Exception ex){

ex.printStackTrace();

session.rollback();

}finally{

session.close();

}

}

/**

* 动态条件组合查询

*/

@Test

public void selectPersonByCondition() throws Exception{

SqlSession session = sessionFactory.openSession();

//获得接口的实现类

PersonDao personDao = session.getMapper(PersonDao.class);

Map<String,Object> map = new HashMap<String,Object>();

//map.put("name", "安");

//map.put("gender", "0");

//map.put("personAddr", "府");

//map.put("birthday", new Date());

try {

List<Person> pList = personDao.selectPersonByCondition(map);

for(Person p : pList){

System.out.println(p);

}

} finally {

session.close();

}

}

/**

* 管理查询

*/

@Test

public void selectOrdersByPersonId() throws Exception{

SqlSession session = sessionFactory.openSession();

//获得接口的实现类

PersonDao personDao = session.getMapper(PersonDao.class);

try {

Person person = personDao.selectOrdersByPersonId(1);

System.out.println(person);

}finally{

session.close();

}

}

}

05_MyBatis基于注解的开发的更多相关文章

  1. 04springMVC结构,mvc模式,spring-mvc流程,spring-mvc的第一个例子,三种handlerMapping,几种控制器,springmvc基于注解的开发,文件上传,拦截器,s

     1. Spring-mvc介绍 1.1市面上流行的框架 Struts2(比较多) Springmvc(比较多而且属于上升的趋势) Struts1(即将被淘汰) 其他 1.2  spring-mv ...

  2. 002-Spring4 快速入门-项目搭建、基于注解的开发bean,Bean创建和装配、基于注解的开发bean,Bean初始化销毁、Bean装配,注解、Bean依赖注入

    一.项目搭建 1.项目创建 eclipse→project explorer→new→Project→Maven Project 默认配置即可创建项目 2.spring配置 <dependenc ...

  3. 基于注解处理器开发自动生成getter和setter方法的插件

    昨天无意中,逛到了lombok的网站,并看到了首页的5分钟视频,视频中的作者只是在实体类中写了几个字段,就可以自动编译为含setter.getter.toString()等方法的class文件.看着挺 ...

  4. 阶段3 1.Mybatis_04.自定义Mybatis框架基于注解开发_3 基于注解的自定义再分析

    这里只需要 一是连接数据库的 二是映射的 注解是class的方式  dom4j技术获取xml的数据,这是xml的方式获取的下面几个关键的点 注解的方式回去dao类里面的几个主要的信息 User黄色的部 ...

  5. Spring 基于注解零配置开发

    本文是转载文章,感觉比较好,如有侵权,请联系本人,我将及时删除. 原文网址:< Spring 基于注解零配置开发 > 一:搜索Bean 再也不用在XML文件里写什么配置信息了. Sprin ...

  6. Spring基于注解开发异常

    基于注解开发: 一开始:用的jar包: 百度查到: 导入aop包: 没用 有的说: Spring版本和jdk版本不匹配 于是我换成了4.0版本 导入的jar包: 还是报错. 解决办法:添加spring ...

  7. Hystrix 基于注解开发

    不对地方,请指出!相互学习! 背景:Hystrix 没有无参构造函数,所以Spring管理bean时候没办法进行管理, 每个类都进行编码 个人感觉不方便,基于注解开发!方便速度快,不侵入代码!引入的j ...

  8. 基于注解的springmvc开发

    原理简析 1. 背景知识:org.springframework.web.ServletContainerInitializer接口 在基于注解的servlet开发中,ServletContainer ...

  9. Spring7——开发基于注解形式的spring

    开发基于注解形式的spring SpringIOC容器的2种形式: (1)xml配置文件:applicationContext.xml; 存bean:<bean> 取bean: Appli ...

随机推荐

  1. 【CODEVS 6384 大米兔学全排列】

    ·大米兔学习全排列,还有一些逆序对,还有一棵二叉索引树.· ·分析:       首先肯定不是像题目上说的那样,使用next_permutation去完成这道题,因为就算是线性的它也不能承受庞大的排列 ...

  2. 【网络流问题·我就想建好模】

    ·为了有助于你读后文,在写题前先列出一些大米饼的代码习惯: 一个提醒:所有的ADD函数无特殊说明均如图:(没有w就直接跳过) 以及: go(i,a,b)=====for(int i=a;i<=b ...

  3. (⊙o⊙)…

    参考:ACdreamers a > b,GCD(a,b) = 1 => GCD(a^m-b^m,a^n-b^n) = a^GCD(n,m) - b^GCD(n,m) /*没有找到推理过程Q ...

  4. CentOS7.4 源码安装MySQL8.0

    MySQL 8 正式版 8.0.11 已发布,官方表示 MySQL 8 要比 MySQL 5.7 快 2 倍,还带来了大量的改进和更快的性能! 以下为本人2018.4.23日安装过程的记录.整个过程大 ...

  5. jquery 中toggle的2种用法

    一.在元素的click事件中绑定两个或两个以上的函数  toggle不像bind需要在后面添加"click"来绑定click触发事件,toggle本身就是click触发的(而且只能 ...

  6. day4 liaoxuefeng---面向对象编程、IO编程

    一.面向对象编程 二.面向对象高级编程 三.IO编程

  7. 数据库学习番外篇 神奇的Redis

    数据库学习番外篇 神奇的Redis 由于最近呢小猿我找到了自己的女神,所以整个学习计划都被打乱了,本来想着一天看一张<SQLServer宝典>的.没成想,我竟然脱离了单身狗的队伍. 最近准 ...

  8. VMWare - Ubuntu 64 (16.04)之扩容介绍

    背景 貌似是一个老生常谈的问题哈,由于自己之前也没有弄过,今天正好有时间稍微折腾了一下. 这里就选择最简单的方式来为大家呈现. VMWare 的设置 没有什么可以过多说的,完全是图形操作.这里直接上图 ...

  9. selenium登录163邮箱

    环境:windows8  python2.7+selenium+chrome 直接上脚本: # coding=utf-8from selenium import webdriverimport tim ...

  10. You And Me 不见不散!

    泰戈尔说: 有一个夜晚,我烧毁了所有的记忆, 从此我的梦就透明了: 有个早晨我扔掉了所有的昨天, 从此我的脚步就轻盈了! 越过山丘,才发现无人等候! 有段话最近很流行:20多岁的你,迷茫又着急,你想要 ...