05_MyBatis基于注解的开发

简介:  要想开发基于注解的MyBatis应用。需要先写一个带有注解的接口。 PersonDao.java的写法如下: package com.rl.dao;   import java.util.List; import java.util.Map;   import org.apache.ibatis.anno

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

                   }

         }

}

 

目录
相关文章
|
13天前
|
Java 数据库连接 数据格式
【Java笔记+踩坑】Spring基础2——IOC,DI注解开发、整合Mybatis,Junit
IOC/DI配置管理DruidDataSource和properties、核心容器的创建、获取bean的方式、spring注解开发、注解开发管理第三方bean、Spring整合Mybatis和Junit
【Java笔记+踩坑】Spring基础2——IOC,DI注解开发、整合Mybatis,Junit
|
28天前
|
SQL Java 数据库连接
Spring Boot联手MyBatis,打造开发利器:从入门到精通,实战教程带你飞越编程高峰!
【8月更文挑战第29天】Spring Boot与MyBatis分别是Java快速开发和持久层框架的优秀代表。本文通过整合Spring Boot与MyBatis,展示了如何在项目中添加相关依赖、配置数据源及MyBatis,并通过实战示例介绍了实体类、Mapper接口及Controller的创建过程。通过本文,你将学会如何利用这两款工具提高开发效率,实现数据的增删查改等复杂操作,为实际项目开发提供有力支持。
58 0
|
1月前
|
SQL Java 数据库连接
后端框架的学习----mybatis框架(7、使用注解开发)
这篇文章讲述了如何使用MyBatis框架的注解方式进行开发,包括在接口上使用注解定义SQL语句,并通过动态代理实现对数据库的增删改查操作,同时强调了接口需要在核心配置文件中注册绑定。
|
3月前
|
Java 数据库连接 数据库
Springboot整合mybatis注解版(202005)
Springboot整合mybatis注解版(202005)
|
3月前
|
SQL XML Java
后端数据库开发JDBC编程Mybatis之用基于XML文件的方式映射SQL语句实操
后端数据库开发JDBC编程Mybatis之用基于XML文件的方式映射SQL语句实操
59 3
|
3月前
|
Java 数据库连接 API
后端开发之用Mybatis简化JDBC的开发快速入门2024及数据库连接池技术和lombok工具详解
后端开发之用Mybatis简化JDBC的开发快速入门2024及数据库连接池技术和lombok工具详解
51 3
|
3月前
|
SQL Java 数据库连接
2万字实操案例之在Springboot框架下基于注解用Mybatis开发实现基础操作MySQL之预编译SQL主键返回增删改查
2万字实操案例之在Springboot框架下基于注解用Mybatis开发实现基础操作MySQL之预编译SQL主键返回增删改查
57 2
|
3月前
|
缓存 NoSQL Java
在 SSM 架构(Spring + SpringMVC + MyBatis)中,可以通过 Spring 的注解式缓存来实现 Redis 缓存功能
【6月更文挑战第18天】在SSM(Spring+SpringMVC+MyBatis)中集成Redis缓存,涉及以下步骤:添加Spring Boot的`spring-boot-starter-data-redis`依赖;配置Redis连接池(如JedisPoolConfig)和连接工厂;在Service层使用`@Cacheable`注解标记缓存方法,指定缓存名和键生成策略;最后,在主配置类启用缓存注解。通过这些步骤,可以利用Spring的注解实现Redis缓存。
69 2
|
2月前
|
数据库
MybatisPlus3---常用注解,驼峰转下滑线作为表明 cteateTime 数据表中的 cteate_time,@TableField,与数据库字段冲突要使用转义字符“`order`“,is
MybatisPlus3---常用注解,驼峰转下滑线作为表明 cteateTime 数据表中的 cteate_time,@TableField,与数据库字段冲突要使用转义字符“`order`“,is
|
3月前
|
XML Java 数据库连接
MyBatis第二课,灰度发布,@Results注解,使用xml书写mysql
MyBatis第二课,灰度发布,@Results注解,使用xml书写mysql