23、SSM框架-Mybatis基于注解实现增删查改和多参数列表查询(5)

来源:互联网 发布:tensorflow不好用 编辑:程序博客网 时间:2024/05/21 22:42

  在前面的文章中演示了如何使用XML来操作Mybatis实现CRUD,但是大量的XML配置文件的编写是非常烦人的。因此Mybatis也提供了基于注解的配置方式,下面我们来演示一下使用接口加注解来实现CRUD的的例子。

本文工程免费下载

一、创建数据库、数据表

[sql] view plain copy print?在CODE上查看代码片派生到我的代码片
  1. use test;    
  2. create table t_employeer(    
  3. employeer_id int not null  primary key AUTO_INCREMENT ,    
  4. employeer_name varchar(50) default null,    
  5. employeer_age int default null,    
  6. employeer_department varchar(100) default null,    
  7. employeer_worktype varchar(100) default null    
  8. )   

二、创建工程

整个工程目录如下:

记得要导入相应的包!

1、雇员对应的类Employeer.java

[java] view plain copy print?在CODE上查看代码片派生到我的代码片
  1. package com.mucfc.model;  
  2. /** 
  3.  * 雇员信息类 
  4.  *@author linbingwen 
  5.  *@time 2015.5.11 
  6.  */  
  7. public class Employeer {  
  8.     private Integer employeer_id;  
  9.     private String employeer_name;  
  10.     private Integer employeer_age ;  
  11.     private String employeer_department;  
  12.     private String employeer_worktype;  
  13.       
  14.     public Employeer() {  
  15.         super();  
  16.     }  
  17.     public Integer getEmployeer_id() {  
  18.         return employeer_id;  
  19.     }  
  20.     public void setEmployeer_id(Integer employeer_id) {  
  21.         this.employeer_id = employeer_id;  
  22.     }  
  23.     public String getEmployeer_name() {  
  24.         return employeer_name;  
  25.     }  
  26.     public void setEmployeer_name(String employeer_name) {  
  27.         this.employeer_name = employeer_name;  
  28.     }  
  29.     public Integer getEmployeer_age() {  
  30.         return employeer_age;  
  31.     }  
  32.     public void setEmployeer_age(Integer employeer_age) {  
  33.         this.employeer_age = employeer_age;  
  34.     }  
  35.     public String getEmployeer_department() {  
  36.         return employeer_department;  
  37.     }  
  38.     public void setEmployeer_department(String employeer_department) {  
  39.         this.employeer_department = employeer_department;  
  40.     }  
  41.     public String getEmployeer_worktype() {  
  42.         return employeer_worktype;  
  43.     }  
  44.     public void setEmployeer_worktype(String employeer_worktype) {  
  45.         this.employeer_worktype = employeer_worktype;  
  46.     }  
  47.     @Override  
  48.     public String toString() {  
  49.         return "Employeer [employeer_id=" + employeer_id + ", employeer_name="  
  50.                 + employeer_name + ", employeer_age=" + employeer_age  
  51.                 + ", employeer_department=" + employeer_department  
  52.                 + ", employeer_worktype=" + employeer_worktype + "]";  
  53.     }  
  54.       
  55.   
  56.   
  57. }  
Employeer.xml文件,用来放置一些映射,删除了Sql语句了

[html] view plain copy print?在CODE上查看代码片派生到我的代码片
  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"  
  3. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">  
  4.  <mapper namespace="com.mucfc.dao.EmployeerMapper">  
  5.    
  6.  <!-- 定义数据库字段与实体对象的映射关系 -->  
  7.  <resultMap type="Employeer" id="employeerResultMap">  
  8.     <id property="employeer_id" column="employeer_id"/>   
  9.     <result property="employeer_name" column="employeer_name"/>  
  10.     <result property="employeer_age" column="employeer_age"/>  
  11.     <result property="employeer_department" column="employeer_department"/>  
  12.     <result property="employeer_worktype" column="employeer_worktype"/>  
  13.  </resultMap>  
  14.       
  15.  </mapper>  

2、配置mybatis-config.xml

[html] view plain copy print?在CODE上查看代码片派生到我的代码片
  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <!DOCTYPE configuration  
  3. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"  
  4. "http://mybatis.org/dtd/mybatis-3-config.dtd">  
  5. <!-- 这是根标签  -->  
  6. <configuration>  
  7.     <!-- 设置别名  -->  
  8.     <typeAliases>  
  9.         <typeAlias alias="Employeer" type="com.mucfc.model.Employeer"/>  
  10.     </typeAliases>  
  11.       
  12.     <!-- 配置数据源相关的信息  -->  
  13.     <environments default="development">  
  14.         <environment id="development">  
  15.             <transactionManager type="JDBC" />  
  16.             <dataSource type="POOLED">  
  17.             <property name="driver" value="com.mysql.jdbc.Driver"/>  
  18.              <property name="url" value="jdbc:mysql://localhost:3306/test?characterEncoding=UTF-8"/>   
  19.             <property name="username" value="root"/>   
  20.             <property name="password" value="christmas258@"/>    
  21.             </dataSource>  
  22.         </environment>  
  23.     </environments>  
  24.       
  25.     <!-- 列出映射文件 -->  
  26.     <mappers>  
  27.         <mapper resource="com/mucfc/model/Employeer.xml" />  
  28.     </mappers>  
  29. </configuration>  

3、EmployeerMapper.java在添加Sql映射语句,使用注解的方式来实现

[java] view plain copy print?在CODE上查看代码片派生到我的代码片
  1. package com.mucfc.dao;  
  2.   
  3. import java.util.List;  
  4. import java.util.Map;  
  5.   
  6. import org.apache.ibatis.annotations.Delete;  
  7. import org.apache.ibatis.annotations.Insert;  
  8. import org.apache.ibatis.annotations.ResultMap;  
  9. import org.apache.ibatis.annotations.Select;  
  10. import org.apache.ibatis.annotations.SelectKey;  
  11. import org.apache.ibatis.annotations.Update;  
  12.   
  13. import com.mucfc.model.Employeer;  
  14.   
  15. /** 
  16.  * SQL语句映射类 
  17.  * @author linbingwen 
  18.  * @time 2015.5.11 
  19.  */  
  20. public interface EmployeerMapper {  
  21.     @Select("select * from `t_employeer` where employeer_name like #{employeer_name}")  
  22.     @ResultMap("employeerResultMap")  
  23.     public List<Employeer> findEmployeerByName(String employeer_name);      
  24.       
  25.     @Select("select* from `t_employeer` where employeer_name=#{0} and employeer_department=#{1}")  
  26.     @ResultMap("employeerResultMap")  
  27.       
  28.     public List<Employeer> findEmployeerByNameandDep(String employeer_name,String employeer_department);   
  29.     @ResultMap("employeerResultMap")  
  30.     @Select("select* from `t_employeer` where employeer_name=#{key1} and employeer_department=#{key2}")  
  31.     public List<Employeer> findEmployeerByNameandDep1(Map<String,String> map);  
  32.       
  33.       
  34.   
  35.     @Select("select* from `t_employeer` where employeer_id =#{id}")  
  36.     @ResultMap("employeerResultMap")  
  37.     public Employeer findEmployeerByID(int id);  
  38.   
  39.      @Insert(" insert into `t_employeer`(employeer_name,employeer_age,employeer_department,employeer_worktype) values(#{employeer_name},#{employeer_age},#{employeer_department},#{employeer_worktype})")  
  40.     public void addEmployeer(Employeer employeer);  
  41.   
  42.     @Delete("delete from `t_employeer` where employeer_id = #{employeer_id}")  
  43.     public void deleteEmployeer(int id);  
  44.   
  45.     @Update(" update t_employeer set employeer_name = #{employeer_name},employeer_age= #{employeer_age},employeer_department = #{employeer_department} ,employeer_worktype=#{employeer_worktype}  where employeer_id = #{employeer_id}  ")  
  46.     public void updateEmployeer(Employeer employeer);  
  47.   
  48. }  
4、测试使用

(1)单参数查找

[java] view plain copy print?在CODE上查看代码片派生到我的代码片
  1. /** 
  2.  * 查找 
  3.  */  
  4. public static Employeer findEmployeerById(int id) {  
  5.     SqlSession session = null;  
  6.     Employeer employeer=null;  
  7.     try {  
  8.         session = sqlSessionFactory.openSession();  
  9.         EmployeerMapper employeerMapper=session.getMapper(EmployeerMapper.class);  
  10.         employeer=employeerMapper.findEmployeerByID(id);  
  11.     } finally {  
  12.         session.close();  
  13.     }  
  14.     return employeer;  
  15. }  
对应SQL语句:

[java] view plain copy print?在CODE上查看代码片派生到我的代码片
  1. @Select("select* from `t_employeer` where employeer_id =#{id}")  
  2. @ResultMap("employeerResultMap")  
  3. public Employeer findEmployeerByID(int id);  

调用:

[java] view plain copy print?在CODE上查看代码片派生到我的代码片
  1. System.out.println(findEmployeerById(10));  
  2. System.out.println(findEmployeerById(11));  

结果:


 (2)  添加

[java] view plain copy print?在CODE上查看代码片派生到我的代码片
  1. /** 
  2.  * 增加 
  3.  */  
  4. public static void addEmployeer(Employeer employeer){  
  5.     SqlSession session = null;  
  6.     try {  
  7.         session = sqlSessionFactory.openSession();  
  8.         EmployeerMapper employeerMapper=session.getMapper(EmployeerMapper.class);  
  9.         employeerMapper.addEmployeer(employeer);  
  10.            session.commit() ;         
  11.     } finally {  
  12.         session.close();  
  13.     }  
  14.       
  15. }  
对应SQL语句:

[java] view plain copy print?在CODE上查看代码片派生到我的代码片
  1. @Insert(" insert into `t_employeer`(employeer_name,employeer_age,employeer_department,employeer_worktype) values(#{employeer_name},#{employeer_age},#{employeer_department},#{employeer_worktype})")  
  2. ic void addEmployeer(Employeer employeer);  

(3)更改

[java] view plain copy print?在CODE上查看代码片派生到我的代码片
  1. /** 
  2.  * 更改 
  3.  */  
  4. public static void updateEmployeer(Employeer employeer){  
  5.     SqlSession session = null;  
  6.     try {  
  7.         session = sqlSessionFactory.openSession();   
  8.         EmployeerMapper employeerMapper=session.getMapper(EmployeerMapper.class);  
  9.         employeerMapper.updateEmployeer(employeer);  
  10.            session.commit() ;         
  11.     } finally {  
  12.         session.close();  
  13.     }  
  14.       
  15. }  
对应SQL语句:

[java] view plain copy print?在CODE上查看代码片派生到我的代码片
  1. @Update(" update t_employeer set employeer_name = #{employeer_name},employeer_age= #{employeer_age},employeer_department = #{employeer_department} ,employeer_worktype=#{employeer_worktype}  where employeer_id = #{employeer_id}  ")  
  2. lic void updateEmployeer(Employeer employeer);  

(4)删除

[java] view plain copy print?在CODE上查看代码片派生到我的代码片
  1. /** 
  2.  * 删除 
  3.  *  
  4.  */  
  5. public static void deleteEmployeer(int id){  
  6.     SqlSession session = null;  
  7.     try {  
  8.         session = sqlSessionFactory.openSession();  
  9.         EmployeerMapper employeerMapper=session.getMapper(EmployeerMapper.class);  
  10.         employeerMapper.deleteEmployeer(id);  
  11.            session.commit() ;         
  12.     } finally {  
  13.         session.close();  
  14.     }  
  15. }  

对应SQL语句:

[java] view plain copy print?在CODE上查看代码片派生到我的代码片
  1. @Delete("delete from `t_employeer` where employeer_id = #{employeer_id}")  
  2. lic void deleteEmployeer(int id);  

(5)列表查询

[java] view plain copy print?在CODE上查看代码片派生到我的代码片
  1. /** 
  2.      * 单参数查询列表 
  3.      */  
  4.     public static List<Employeer> getEmployeerList(String employeer_name){  
  5.         SqlSession session = null;  
  6.          List<Employeer> employeers=null;  
  7.         try {  
  8.             session = sqlSessionFactory.openSession();   
  9.             EmployeerMapper employeerMapper=session.getMapper(EmployeerMapper.class);  
  10.              employeers = employeerMapper.findEmployeerByName(employeer_name);    
  11.             session.commit() ;            
  12.         } finally {  
  13.             session.close();  
  14.         }  
  15.         return employeers;  
  16.      
  17.     }  
  18.     /** 
  19.      * 多参数查询列表 
  20.      */  
  21.     public static List<Employeer> getEmployeerList(String employeer_name,String employeer_department){  
  22.         SqlSession session = null;  
  23.          List<Employeer> employeers=null;  
  24.         try {  
  25.             session = sqlSessionFactory.openSession();   
  26.             EmployeerMapper employeerMapper=session.getMapper(EmployeerMapper.class);  
  27.              employeers = employeerMapper.findEmployeerByNameandDep(employeer_name, employeer_department);  
  28.             session.commit() ;            
  29.         } finally {  
  30.             session.close();  
  31.         }  
  32.         return employeers;  
  33.      
  34.     }  
  35.     /** 
  36.      * 多参数查询列表,使用map 
  37.      */  
  38.     public static List<Employeer> getEmployeerList(Map<String, String> map){  
  39.         SqlSession session = null;  
  40.          List<Employeer> employeers=null;  
  41.         try {  
  42.             session = sqlSessionFactory.openSession();   
  43.             EmployeerMapper employeerMapper=session.getMapper(EmployeerMapper.class);  
  44.              employeers = employeerMapper.findEmployeerByNameandDep1(map);  
  45.             session.commit() ;            
  46.         } finally {  
  47.             session.close();  
  48.         }  
  49.         return employeers;  
  50.      
  51.     }  
对应的Sql语句

[java] view plain copy print?在CODE上查看代码片派生到我的代码片
  1.    @Select("select * from `t_employeer` where employeer_name like #{employeer_name}")  
  2. @ResultMap("employeerResultMap")  
  3. public List<Employeer> findEmployeerByName(String employeer_name);      
  4.      
  5.    @Select("select* from `t_employeer` where employeer_name=#{0} and employeer_department=#{1}")  
  6. @ResultMap("employeerResultMap")   
  7. public List<Employeer> findEmployeerByNameandDep(String employeer_name,String employeer_department);   
  8. @ResultMap("employeerResultMap")  
  9. @Select("select* from `t_employeer` where employeer_name=#{key1} and employeer_department=#{key2}")  
  10. public List<Employeer> findEmployeerByNameandDep1(Map<String,String> map);  
  11.   
  12.   
  13. @Select("select* from `t_employeer` where employeer_id =#{id}")  
  14. @ResultMap("employeerResultMap")  
  15. public Employeer findEmployeerByID(int id);  

测试:

[java] view plain copy print?在CODE上查看代码片派生到我的代码片
  1. System.out.println("=========================使用单参数查询===========================");  
  2.     List<Employeer> employeers=getEmployeerList("张三");  
  3.      for(Employeer employeer:employeers){  
  4.             System.out.println(employeer);  
  5.         }  
  6.  System.out.println("=========================使用多单参数查询===========================");  
  7.      List<Employeer> employeers1=getEmployeerList("张三","产品二部");  
  8.      for(Employeer employeer1:employeers1){  
  9.             System.out.println(employeer1);  
  10.         }  
  11.      System.out.println("=========================使用多单参数map方式查询===========================");  
  12.      Map<String, String> map = new HashMap<String, String>();   
  13.      map.put("key1""明明");   
  14.      map.put("key2""财会部");  
  15.      List<Employeer> employeers2=getEmployeerList(map);  
  16.      for(Employeer employeer2:employeers2){  
  17.             System.out.println(employeer2);  
  18.         }  
结果:


本文工程免费下载

0 0
原创粉丝点击