05_MyBatis基于注解的开发



  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();

}

}

}

时间: 2024-11-02 15:17:37

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

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

 1. Spring-mvc介绍 1.1市面上流行的框架 Struts2(比较多) Springmvc(比较多而且属于上升的趋势) Struts1(即将被淘汰) 其他 1.2  spring-mvc结构 DispatcherServlet:中央控制器,把请求给转发到具体的控制类 Controller:具体处理请求的控制器(配置文件方式需要配置,注解方式不用配置) handlerMapping:映射处理器,负责映射中央处理器转发给controller时的映射策略 ModelAndView:服务

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

这里只需要 一是连接数据库的 二是映射的 注解是class的方式  dom4j技术获取xml的数据,这是xml的方式获取的下面几个关键的点 注解的方式回去dao类里面的几个主要的信息 User黄色的部门就是要封装到哪里的数据.基于注解的开发,如何拿到User是最关键的 设计注解和泛型相关的知识 最终得到class的名称 原文地址:https://www.cnblogs.com/wangjunwei/p/11306401.html

springMVC学习(基于注解的MVC)

今天这篇博客给大家带来基于注解的springMVC开发,大家之前有没有想过一个问题,就是我们之前基于配置文件配置写出来的那些Controller只能默认处理一个方法,那么我如果想像structs2那样子来让一个Controller可以处理多个请求,对于不同的请求,跳转进不同的方法来做处理,这样是极好的,springMVC基于注解的开发,就可以完成上边的这些需求,下面我们看一个例子. 添加jar文件 首先我们需要添加需要的jar文件,这里只是比上一篇springMVC helloworld多了一个

基于注解的struts2+spring+hibernate集成

applicationContext.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.spri

Spring6:基于注解的Spring MVC(上篇)

什么是Spring MVC Spring MVC框架是一个MVC框架,通过实现Model-View-Controller模式来很好地将数据.业务与展现进行分离.从这样一个角度来说,Spring MVC和Structs.Structs2非常类似.Spring MVC的设计是围绕DispatcherServlet展开的,DispatcherServlet负责将请求派发到特定的handler.通过可配置的hander mappings.view resolution.locale以及theme res

Struts2基于注解的Action配置

使用注解来配置Action的最大优点就是能够实现零配置,可是事务都是有利有弊的.使用方便.维护起来就没那么方便了. 要使用注解方式,我们必须加入一个额外包:struts2-convention-plugin-2.x.x.jar. 虽说是零配置的,但struts.xml还是少不了的,配置例如以下: <? xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apa

基于注解的SSH将配置精简到极致(1)

很早之前就想写一篇关于SSH整合的博客了,但是一直觉得使用SSH的时候那么多的配置文件,严重破坏了我们代码整体性,比如你要看两个实体的关系还得对照*.hbm.xml文件,要屡清一个Action可能需要对照applicationContext*.xml和struts*.xml文件.总之过多的配置文件坏破坏代码的整体性,会打乱代码的连续性,因为很多情况下你需要一边看Java代码,一边看xml的配置,采用注解就能很好的解决这个问题. 当然,即使采用注解的方式,也不能完全的丢掉配置文件,因为配置文件是程

Spring MVC中基于注解的 Controller

终于来到了基于注解的 Spring MVC 了.之前我们所讲到的 handler,需要根据 url 并通过 HandlerMapping 来映射出相应的 handler 并调用相应的方法以响应请求.实际上,ControllerClassNameHandlerMapping, MultiActionController 和选择恰当的 methodNameResolver(如 InternalPathMethodNameResolver) 就已经可以在很大程度上帮助我们省去不少的 XML 配置,谁让

基于注解的方式管理Bean

--------------------siwuxie095 基于注解的方式管理 Bean (一)准备 1.注解,可以理解为代码中的特殊标记,使用注解可以帮助完成功能 2.注解写法:@注解名称(属性名称="属性值") 3.注解可以使用在类上面.方法上面.属性上面 4.注解可以替代配置文件来管理 Bean,但不可能完全脱离配置 文件,仍然需要在配置文件中做少许配置 5.创建 Spring 配置文件,并引入 XML 约束 spring-beans-4.3.xsd 和 spring-cont