Add, delete, query, modify, and query multiple parameter lists based on Annotations
In the overview of [Mybatis] Mybatis and the addition, deletion, modification, and query of the first Mybatis instance and the programming method of [Mybatis] Mybatis interface demonstrate how to use XML to operate Mybatis to implement CRUD, however, writing a large number of XML configuration files is very annoying. Therefore, Mybatis also provides an annotation-based configuration method. The following example shows how to use interfaces and annotations to implement CRUD.
1. create databases and data tables
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 )
2. Create a project
The project directory is as follows:
Remember to import the corresponding package!
1. Employeer. java
Package com. mucfc. model;/*** employee information class * @ 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. response = Response ;}@ Overridepublic String toString () {return "Employeer [employeer_id =" + employeer_id + ", employeer_name =" + employeer_name + ", response =" + employeer_age + ", employeer_department = "+ employeer_department +", employeer_worktype = "+ employeer_worktype +"] ";}}
The Employeer. xml file is used to place some mappings and delete SQL statements.
<? Xml version = "1.0" encoding = "UTF-8"?> <! DOCTYPE mapper PUBLIC "-// mybatis.org//DTD Mapper 3.0 //" http://mybatis.org/dtd/mybatis-3-mapper.dtd "> <mapper namespace =" com. mucfc. dao. EmployeerMapper "> <! -- Define the ing between database fields and object --> <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. Configure mybatis-config.xml
<? Xml version = "1.0" encoding = "UTF-8"?> <! DOCTYPE configuration PUBLIC "-// mybatis.org//DTD Config 3.0 // EN "" http://mybatis.org/dtd/mybatis-3-config.dtd "> <! -- This is the root tag --> <configuration> <! -- Set the alias --> <typeAliases> <typeAlias alias = "Employeer" type = "com. mucfc. model. Employeer"/> </typeAliases> <! -- Configure data source information --> <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> <! -- List ing files --> <mappers> <mapper resource = "com/mucfc/model/Employeer. xml"/> </mappers> </configuration>
3. EmployeerMapper. java adds an SQL ing statement and uses annotations for implementation.
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 statement ing Class * @ author linbingwen * @ time 2015.5.11 */public interface EmployeerMapper {@ Select ("select * from't _ employeer 'where employeer_name like # {employeer_name }") @ ResultMap ("employeerResultMap") public List
FindEmployeerByName (String employeer_name); @ Select ("select * from 't_ employeer 'where employeer_name =#{ 0} and employeer_department =#{ 1 }") @ ResultMap ("employeerResultMap") public List
FindEmployeerByNameandDep (String employeer_name, String employeer_department); @ ResultMap ("employeerResultMap ") @ Select ("select * from't _ employeer 'where employeer_name =#{ key1} and employeer_department =#{ key2}") public List
FindEmployeerByNameandDep1 (Map
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, Department) 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}, Region =#{ employeer_age}, employeer_department =#{ employeer_department }, employeer_worktype =#{ employeer_worktype} where employeer_id =#{ employeer_id} ") public void updateEmployeer (Employeer employeer );}
4. Test and use
(1) single parameter search
/*** Search for */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 ;}
Corresponding SQL statement:
@Select("select* from `t_employeer` where employeer_id =#{id}")@ResultMap("employeerResultMap")public Employeer findEmployeerByID(int id);
Call:
System.out.println(findEmployeerById(10)); System.out.println(findEmployeerById(11));
Result:
(2) Add
/*** Added */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 ();}}
Corresponding SQL statement:
@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) Change
/*** Change */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 ();}}
Corresponding SQL statement:
@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) Delete
/*** Delete **/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 ();}}
Corresponding SQL statement:
@Delete("delete from `t_employeer` where employeer_id = #{employeer_id}")public void deleteEmployeer(int id);
(5) List Query
/*** Single-parameter query List */public static List
GetEmployeerList (String employeer_name) {SqlSession session = null; List
Employeers = null; try {session = sqlSessionFactory. openSession (); EmployeerMapper employeerMapper = session. getMapper (EmployeerMapper. class); employeers = employeerMapper. findEmployeerByName (employeer_name); session. commit ();} finally {session. close ();} return employeers;}/*** multi-parameter query List */public static List
GetEmployeerList (String employeer_name, String employeer_department) {SqlSession session = null; List
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;}/*** multi-parameter query List, using map */public static List
GetEmployeerList (Map
Map) {SqlSession session = null; List
Employeers = null; try {session = sqlSessionFactory. openSession (); EmployeerMapper employeerMapper = session. getMapper (EmployeerMapper. class); employeers = employeerMapper. findEmployeerByNameandDep1 (map); session. commit ();} finally {session. close ();} return employeers ;}
Corresponding SQL statement
@Select("select * from `t_employeer` where employeer_name like #{employeer_name}")@ResultMap("employeerResultMap")public List
findEmployeerByName(String employeer_name); @Select("select* from `t_employeer` where employeer_name=#{0} and employeer_department=#{1}")@ResultMap("employeerResultMap") public List
findEmployeerByNameandDep(String employeer_name,String employeer_department); @ResultMap("employeerResultMap")@Select("select* from `t_employeer` where employeer_name=#{key1} and employeer_department=#{key2}")public List
findEmployeerByNameandDep1(Map
map);@Select("select* from `t_employeer` where employeer_id =#{id}")@ResultMap("employeerResultMap")public Employeer findEmployeerByID(int id);
Test:
System. out. println ("============================================== ========================== "); list
Employeers = getEmployeerList ("Zhang San"); for (Employeer employeer: employeers) {System. out. println (employeer);} System. out. println ("================================ use multi-single-parameter query ======== ============================ "); list
Employeers1 = getEmployeerList ("Zhang San", "product 2"); for (Employeer employeer1: employeers1) {System. out. println (employeer1);} System. out. println ("============================================ ============================== "); map
Map = new HashMap
(); Map. put ("key1", ""); map. put ("key2", "Finance Department"); List
Employeers2 = getEmployeerList (map); for (Employeer employeer2: employeers2) {System. out. println (employeer2 );}
Result: