05_MyBatis基于注解的开发
要想开发基于注解的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基于注解的开发的更多相关文章
- 04springMVC结构,mvc模式,spring-mvc流程,spring-mvc的第一个例子,三种handlerMapping,几种控制器,springmvc基于注解的开发,文件上传,拦截器,s
1. Spring-mvc介绍 1.1市面上流行的框架 Struts2(比较多) Springmvc(比较多而且属于上升的趋势) Struts1(即将被淘汰) 其他 1.2 spring-mv ...
- 002-Spring4 快速入门-项目搭建、基于注解的开发bean,Bean创建和装配、基于注解的开发bean,Bean初始化销毁、Bean装配,注解、Bean依赖注入
一.项目搭建 1.项目创建 eclipse→project explorer→new→Project→Maven Project 默认配置即可创建项目 2.spring配置 <dependenc ...
- 基于注解处理器开发自动生成getter和setter方法的插件
昨天无意中,逛到了lombok的网站,并看到了首页的5分钟视频,视频中的作者只是在实体类中写了几个字段,就可以自动编译为含setter.getter.toString()等方法的class文件.看着挺 ...
- 阶段3 1.Mybatis_04.自定义Mybatis框架基于注解开发_3 基于注解的自定义再分析
这里只需要 一是连接数据库的 二是映射的 注解是class的方式 dom4j技术获取xml的数据,这是xml的方式获取的下面几个关键的点 注解的方式回去dao类里面的几个主要的信息 User黄色的部 ...
- Spring 基于注解零配置开发
本文是转载文章,感觉比较好,如有侵权,请联系本人,我将及时删除. 原文网址:< Spring 基于注解零配置开发 > 一:搜索Bean 再也不用在XML文件里写什么配置信息了. Sprin ...
- Spring基于注解开发异常
基于注解开发: 一开始:用的jar包: 百度查到: 导入aop包: 没用 有的说: Spring版本和jdk版本不匹配 于是我换成了4.0版本 导入的jar包: 还是报错. 解决办法:添加spring ...
- Hystrix 基于注解开发
不对地方,请指出!相互学习! 背景:Hystrix 没有无参构造函数,所以Spring管理bean时候没办法进行管理, 每个类都进行编码 个人感觉不方便,基于注解开发!方便速度快,不侵入代码!引入的j ...
- 基于注解的springmvc开发
原理简析 1. 背景知识:org.springframework.web.ServletContainerInitializer接口 在基于注解的servlet开发中,ServletContainer ...
- Spring7——开发基于注解形式的spring
开发基于注解形式的spring SpringIOC容器的2种形式: (1)xml配置文件:applicationContext.xml; 存bean:<bean> 取bean: Appli ...
随机推荐
- 细胞(cell) 矩阵快速幂
题目描述小 X 在上完生物课后对细胞的分裂产生了浓厚的兴趣.于是他决定做实验并观察细胞分裂的规律.他选取了一种特别的细胞,每天每个该细胞可以分裂出 x 1 个新的细胞.小 X 决定第 i 天向培养皿中 ...
- salt基本使用之一(1)
1.帮助文档 以cmd函数为例子说下salt中的一些帮助信息 # 查看指定modules用法 salt '*' sys.doc cmd # 查看所有的modules列表 salt '*' sys.li ...
- jvm(一):总体概述
我们首先来了解一下jdk,jre,jvm的之间的关系 jvm用于运行字节码,如果我们仅仅用于运行java程序,仅部署jre即可,如果我们需要进行java开发则需要jdk环境 java结构内容: jav ...
- ASP.NET Core部署到Windows IIS
网上已经有许多ASP.NET Core关于Widows IIS部署的文章,在部署到服务器时遇到了一些问题,在这里我就不再对原理进行阐释(复制)了,只写下一些关键环节,想看原理的同学请参考官网,此文章作 ...
- hibernate实体对象的三种状态:自由状态,持久状态,游离状态.
自由态与游离态的区别: 当一个持久化对象,脱离开Hibernate的缓存管理后,它就处于游离状态,游离对象和自由对象的最大区别在于,游离对象在数据库中可能还存在一条与它 对应的记录,只是现在这个游离对 ...
- 如何用cmd通过sublime打开文件?
sublime 提供了专门的命令工具subl.exe,就在它的安装目录之下,讲安装目录配置到系统环境变量中就OK了.具体如下: 1.找到sublime安装路径 如我的默认路径:C:\Program F ...
- 643. Maximum Average Subarray
Given an array consisting of \(n\) integers, find the contiguous subarray of given length \(k\) that ...
- Python的一个解释凯撒密码的程序
#!/usr/bin/env python # -*- coding: utf-8 -*- ''' { Title:CaserCode Author:naiquan Type:crypto Detai ...
- html css <input> javaScript .数据类型 JS中的函数编写方式 BOM总结 DOM总结
Day27 html css div 块标签. 特点: 独占一行,有高度和宽度 span 行元素. 特点:在同一行显示,当前行满了自动去下一行显示. 不识别高度和宽度 1.1.1.1 2.输入域标签 ...
- 排序算法的C语言实现(上 比较类排序:插入排序、快速排序与归并排序)
总述:排序是指将元素集合按规定的顺序排列.通常有两种排序方法:升序排列和降序排列.例如,如整数集{6,8,9,5}进行升序排列,结果为{5,6,8,9},对其进行降序排列结果为{9,8,6,5}.虽然 ...