Mybatis基于注解实现增删查改和多参数列表查询

来源:互联网 发布:矩阵可逆与秩的关系 编辑:程序博客网 时间:2024/06/06 02:14

      林炳文Evankaka原创作品。转载请注明出处http://blog.csdn.net/evankaka

       在【Mybatis】Mybatis入门概述及第一个Mybatis实例实现增删改查 【Mybatis】Mybatis接口编程方式实现增删改查 演示了如何使用XML来操作Mybatis实现CRUD,但是大量的XML配置文件的编写是非常烦人的。因此Mybatis也提供了基于注解的配置方式,下面我们来演示一下使用接口加注解来实现CRUD的的例子。

本文工程免费下载

一、创建数据库、数据表

use test;  create table t_employeer(  employeer_id int not null  primary key AUTO_INCREMENT ,  employeer_name varchar(50) default null,  employeer_age int default null,  employeer_department varchar(100) default null,  employeer_worktype varchar(100) default null  ) 

二、创建工程

整个工程目录如下:

记得要导入相应的包!

1、雇员对应的类Employeer.java

package com.mucfc.model;/** * 雇员信息类 *@author linbingwen *@time 2015.5.11 */public class Employeer {private Integer employeer_id;private String employeer_name;private Integer employeer_age ;private String employeer_department;private String employeer_worktype;public Employeer() {super();}public Integer getEmployeer_id() {return employeer_id;}public void setEmployeer_id(Integer employeer_id) {this.employeer_id = employeer_id;}public String getEmployeer_name() {return employeer_name;}public void setEmployeer_name(String employeer_name) {this.employeer_name = employeer_name;}public Integer getEmployeer_age() {return employeer_age;}public void setEmployeer_age(Integer employeer_age) {this.employeer_age = employeer_age;}public String getEmployeer_department() {return employeer_department;}public void setEmployeer_department(String employeer_department) {this.employeer_department = employeer_department;}public String getEmployeer_worktype() {return employeer_worktype;}public void setEmployeer_worktype(String employeer_worktype) {this.employeer_worktype = employeer_worktype;}@Overridepublic String toString() {return "Employeer [employeer_id=" + employeer_id + ", employeer_name="+ employeer_name + ", employeer_age=" + employeer_age+ ", employeer_department=" + employeer_department+ ", employeer_worktype=" + employeer_worktype + "]";}}
Employeer.xml文件,用来放置一些映射,删除了Sql语句了

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.mucfc.dao.EmployeerMapper">  <!-- 定义数据库字段与实体对象的映射关系 --> <resultMap type="Employeer" id="employeerResultMap">    <id property="employeer_id" column="employeer_id"/>     <result property="employeer_name" column="employeer_name"/>    <result property="employeer_age" column="employeer_age"/>    <result property="employeer_department" column="employeer_department"/>    <result property="employeer_worktype" column="employeer_worktype"/> </resultMap>     </mapper>

2、配置mybatis-config.xml

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><!-- 这是根标签  --><configuration><!-- 设置别名  --><typeAliases><typeAlias alias="Employeer" type="com.mucfc.model.Employeer"/></typeAliases><!-- 配置数据源相关的信息  --><environments default="development"><environment id="development"><transactionManager type="JDBC" /><dataSource type="POOLED"><property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/test?characterEncoding=UTF-8"/> <property name="username" value="root"/> <property name="password" value="christmas258@"/>  </dataSource></environment></environments><!-- 列出映射文件 --><mappers><mapper resource="com/mucfc/model/Employeer.xml" /></mappers></configuration>

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

package com.mucfc.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.ResultMap;import org.apache.ibatis.annotations.Select;import org.apache.ibatis.annotations.SelectKey;import org.apache.ibatis.annotations.Update;import com.mucfc.model.Employeer;/** * SQL语句映射类 * @author linbingwen * @time 2015.5.11 */public interface EmployeerMapper {    @Select("select * from `t_employeer` where employeer_name like #{employeer_name}")@ResultMap("employeerResultMap")public List<Employeer> findEmployeerByName(String employeer_name);            @Select("select* from `t_employeer` where employeer_name=#{0} and employeer_department=#{1}")@ResultMap("employeerResultMap")    public List<Employeer> findEmployeerByNameandDep(String employeer_name,String employeer_department); @ResultMap("employeerResultMap")@Select("select* from `t_employeer` where employeer_name=#{key1} and employeer_department=#{key2}")public List<Employeer> findEmployeerByNameandDep1(Map<String,String> map);@Select("select* from `t_employeer` where employeer_id =#{id}")@ResultMap("employeerResultMap")public Employeer findEmployeerByID(int id);     @Insert(" insert into `t_employeer`(employeer_name,employeer_age,employeer_department,employeer_worktype) values(#{employeer_name},#{employeer_age},#{employeer_department},#{employeer_worktype})")public void addEmployeer(Employeer employeer);    @Delete("delete from `t_employeer` where employeer_id = #{employeer_id}")public void deleteEmployeer(int id);    @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}  ")public void updateEmployeer(Employeer employeer);}
4、测试使用

(1)单参数查找

/** * 查找 */public static Employeer findEmployeerById(int id) {SqlSession session = null;Employeer employeer=null;try {session = sqlSessionFactory.openSession();EmployeerMapper employeerMapper=session.getMapper(EmployeerMapper.class);employeer=employeerMapper.findEmployeerByID(id);} finally {session.close();}return employeer;}
对应SQL语句:

@Select("select* from `t_employeer` where employeer_id =#{id}")@ResultMap("employeerResultMap")public Employeer findEmployeerByID(int id);

调用:

  System.out.println(findEmployeerById(10));  System.out.println(findEmployeerById(11));

结果:


 (2)  添加

/** * 增加 */public static void addEmployeer(Employeer employeer){SqlSession session = null;try {session = sqlSessionFactory.openSession();EmployeerMapper employeerMapper=session.getMapper(EmployeerMapper.class);employeerMapper.addEmployeer(employeer);            session.commit() ;  } finally {session.close();}}
对应SQL语句:

     @Insert(" insert into `t_employeer`(employeer_name,employeer_age,employeer_department,employeer_worktype) values(#{employeer_name},#{employeer_age},#{employeer_department},#{employeer_worktype})")public void addEmployeer(Employeer employeer);

(3)更改

/** * 更改 */public static void updateEmployeer(Employeer employeer){SqlSession session = null;try {session = sqlSessionFactory.openSession(); EmployeerMapper employeerMapper=session.getMapper(EmployeerMapper.class);employeerMapper.updateEmployeer(employeer);            session.commit() ;  } finally {session.close();}}
对应SQL语句:

    @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}  ")public void updateEmployeer(Employeer employeer);

(4)删除

/** * 删除 *  */public static void deleteEmployeer(int id){SqlSession session = null;try {session = sqlSessionFactory.openSession();EmployeerMapper employeerMapper=session.getMapper(EmployeerMapper.class);employeerMapper.deleteEmployeer(id);            session.commit() ;  } finally {session.close();}}

对应SQL语句:

    @Delete("delete from `t_employeer` where employeer_id = #{employeer_id}")public void deleteEmployeer(int id);

(5)列表查询

/** * 单参数查询列表 */public static List<Employeer> getEmployeerList(String employeer_name){SqlSession session = null; List<Employeer> employeers=null;try {session = sqlSessionFactory.openSession(); EmployeerMapper employeerMapper=session.getMapper(EmployeerMapper.class); employeers = employeerMapper.findEmployeerByName(employeer_name);            session.commit() ;  } finally {session.close();}return employeers;       }/** * 多参数查询列表 */public static List<Employeer> getEmployeerList(String employeer_name,String employeer_department){SqlSession session = null; List<Employeer> employeers=null;try {session = sqlSessionFactory.openSession(); EmployeerMapper employeerMapper=session.getMapper(EmployeerMapper.class); employeers = employeerMapper.findEmployeerByNameandDep(employeer_name, employeer_department);            session.commit() ;  } finally {session.close();}return employeers;       }/** * 多参数查询列表,使用map */public static List<Employeer> getEmployeerList(Map<String, String> map){SqlSession session = null; List<Employeer> employeers=null;try {session = sqlSessionFactory.openSession(); EmployeerMapper employeerMapper=session.getMapper(EmployeerMapper.class); employeers = employeerMapper.findEmployeerByNameandDep1(map);            session.commit() ;  } finally {session.close();}return employeers;       }
对应的Sql语句

    @Select("select * from `t_employeer` where employeer_name like #{employeer_name}")@ResultMap("employeerResultMap")public List<Employeer> findEmployeerByName(String employeer_name);            @Select("select* from `t_employeer` where employeer_name=#{0} and employeer_department=#{1}")@ResultMap("employeerResultMap") public List<Employeer> findEmployeerByNameandDep(String employeer_name,String employeer_department); @ResultMap("employeerResultMap")@Select("select* from `t_employeer` where employeer_name=#{key1} and employeer_department=#{key2}")public List<Employeer> findEmployeerByNameandDep1(Map<String,String> map);@Select("select* from `t_employeer` where employeer_id =#{id}")@ResultMap("employeerResultMap")public Employeer findEmployeerByID(int id);

测试:

System.out.println("=========================使用单参数查询===========================");List<Employeer> employeers=getEmployeerList("张三"); for(Employeer employeer:employeers){             System.out.println(employeer);         } System.out.println("=========================使用多单参数查询==========================="); List<Employeer> employeers1=getEmployeerList("张三","产品二部"); for(Employeer employeer1:employeers1){             System.out.println(employeer1);         } System.out.println("=========================使用多单参数map方式查询==========================="); Map<String, String> map = new HashMap<String, String>();  map.put("key1", "明明");  map.put("key2", "财会部"); List<Employeer> employeers2=getEmployeerList(map); for(Employeer employeer2:employeers2){             System.out.println(employeer2);         }
结果:


      林炳文Evankaka原创作品。转载请注明出处http://blog.csdn.net/evankaka

本文工程免费下载

2 0