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. 基于注解处理器开发自动生成getter和setter方法的插件

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

  3. spring基于注解程序开发

    2019独角兽企业重金招聘Python工程师标准>>> 一.datasource.sessionfactory配置 <bean id="dataSource" ...

  4. 从源码深处体验Spring核心技术--基于注解的IOC初始化

    Annotation 的前世今生 从 Spring2.0 以后的版本中,Spring 也引入了基于注解(Annotation)方式的配置,注解(Annotation)是 JDK1.5 中引入的一个新特 ...

  5. 【Spring】IOC:基于注解的IOC容器初始化源码分析

    从 Spring2.0 以后的版本中,Spring 也引入了基于注解(Annotation)方式的配置,注解(Annotation)是 JDK1.5 中引入的一个新特性,用于简化 Bean 的配置,可 ...

  6. java注解的开发_使用Java注解开发自动生成SQL

    使用注解开发的好处就是减少配置文件的使用.在实际过程中,随着项目越来越复杂,功能越来越多,会产生非常多的配置文件.但是,当配置文件过多,实际维护过程中产生的问题就不容易定位,这样就会徒劳的增加工作量. ...

  7. java元婴期(28)----java进阶(springmvc(2)---入门程序(下)基于注解开发(重点掌握))

    入门程序 非注解的处理器映射器和适配器 1.非注解的处理器映射器 处理器映射器: org.springframework.web.servlet.handler.BeanNameUrlHandlerM ...

  8. MyBatis-学习笔记04【04.自定义Mybatis框架基于注解开发】

    Java后端 学习路线 笔记汇总表[黑马程序员] MyBatis-学习笔记01[01.Mybatis课程介绍及环境搭建][day01] MyBatis-学习笔记02[02.Mybatis入门案例] M ...

  9. JavaEE框架整合之基于注解的SSH整合

    基于注解的SSH整合 开发环节步骤: 实体类 -----> DAO开发 -----> Service开发 -----> Action动作类开发 -----> 配置文件(appl ...

最新文章

  1. WinAPI: PolyBezier - 绘制贝塞尔线
  2. 【Notes】《Thinking in Java》【Chapter 11】Part II
  3. mysql查询结果单位换算后小数位数的保留方式
  4. 刚刚,ACM宣布三位深度学习之父共同获得2018年图灵奖!
  5. @requestbody 接受int参数_C++之指针作为函数参数
  6. 打印斐波那契数列前10位数字
  7. python获取网页标题_Python2获取网页标题
  8. [C++基础]031_如何正确获取用户的输入
  9. 网络安全管理规章制度
  10. 【面向对象】第三单元规格化设计总结——JML
  11. 2007所做更改会影响共用模板normal
  12. 哪个ei期刊容易过计算机专业,计算机期刊哪个好中_ei期刊计算机_计算机八大核心期刊...
  13. (数据结构)栈(LIFO结构)——概念、进栈、出栈、先进后出的特性
  14. Python123第六周编程题
  15. solr6.3与MySQL结合使用
  16. 解决error ‘XXX‘ is not defined no-undef且项目没有eslintrc.js文件问题
  17. 马斯洛的五大需求层次理论
  18. 关于我国十进制网络安全地址投入使用
  19. Witt向量简介 论文的参考文献
  20. 开启智慧的10大网站--非常值得收藏!

热门文章

  1. wordcloud库
  2. C语言基础语言总结(二)
  3. VTK:颜色边缘用法实战
  4. JavaScript实现MergeSort归并排序算法(附完整源码)
  5. wxWidgets:wxListCtrl 示例
  6. wxWidgets:在带有 DC 的面板上绘图
  7. boost::sort模块实现弦平面稳定测试
  8. boost::sort模块实现提供多种分布的灵活随机数生成器的测试程序
  9. boost::hana::unfold_right用法的测试程序
  10. boost::make_reverse_graph用法的测试程序