Introduction to MyBatis
MyBatis is an excellent persistence layer framework that supports plain SQL queries, stored procedures and advanced mapping. MyBatis eliminates manual settings of almost all JDBC code and parameters and search for result sets. MyBatis can use simple XML or annotations for configuration and original mapping to map interfaces and Java's POJOs (Plain Old Java Objects) into records in the database.
MyBatis download: https://github.com/mybatis/mybatis-3/releases
Mybatis instance
CRUD operation on a User table:
User table:
-- ------------------------------ Table structure for `user`-- ----------------------------DROP TABLE IF EXISTS `user`;CREATE TABLE `user` (`id` int(11) NOT NULL AUTO_INCREMENT,`userName` varchar(50) DEFAULT NULL,`userAge` int(11) DEFAULT NULL,`userAddress` varchar(200) DEFAULT NULL,PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;-- ------------------------------ Records of user-- ----------------------------INSERT INTO `user` VALUES ('1', 'summer', '30', 'shanghai');INSERT INTO `user` VALUES ('2', 'test2', '22', 'suzhou');INSERT INTO `user` VALUES ('3', 'test1', '29', 'some place');INSERT INTO `user` VALUES ('4', 'lu', '28', 'some place');INSERT INTO `user` VALUES ('5', 'xiaoxun', '27', 'nanjing'); Create a mybatis xml configuration file Configuration.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"><configuration><!-- mybatis alias definition--><typeAliases> <typeAlias alias="User" type="com.mybatis.test.User"/> </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://127.0.0.1:3306/mybatis" /><property name="username" value="root"/><property name="password" value="admin"/></dataSource></environment></environments><!-- mybatis mapper file, each xml configuration file corresponds to an interface --><mappers><mapper resource="com/mybatis/test/User.xml"/><mappers></configuration> Define User mappers' User.xml configuration file
<?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.mybatis.test.IUserOperation"><!-- select statement--><select id="selectUserByID" parameterType="int" resultType="User">select * from `user` where user.id = #{id}</select><!-- The defined resultMap can solve the problem of inconsistent property names and database column names of the class --><!-- <resultMap type="User" id="userResultMap"><id property="id" column="user_id" /><result property="userName" column="user_userName" /><result property="userAge" column="user_userAge" /><result property="userAddress" column="user_userAddress" /></resultMap> --><!-- Return the select statement of the list, note that the value of resultMap points to the previously defined --><!-- <select id="selectUsersByName" parameterType="string" resultMap="userResultMap">select * from user where user.userName = #{userName}</select> --><select id="selectUsersByName" parameterType="string" resultType="User">select * from user where user.userName = #{userName}</select><!--Selection SQL statement that performs an increase operation. The id and parameterType are the same as the name and parameter type of the addUser method in the IUserOperation interface. useGeneratedKeys set to "true" indicates that MyBatis wants to obtain the primary key automatically generated by the database; keyProperty="id" specifies injecting the obtained primary key value into the User's id property --> <insert id="addUser" parameterType="User" useGeneratedKeys="true" keyProperty="id"> insert into user(userName,userAge,userAddress) values(#{userName},#{userAge},#{userAddress}) </insert><update id="updateUser" parameterType="User" >update user set userName=#{userName},userAge=#{userAge},userAddress=#{userAddress} where id=#{id}</update><delete id="deleteUser" parameterType="int">delete from user where id=#{id}</delete></mapper> The configuration file implements the mapping relationship between interfaces and SQL statements. selectUsersByName uses two methods to implement it. Commented out is also an implementation. Using resultMap can define the mapping relationship between the attribute and database column name. Property is the property of the class, column is the column name of the table, or it can be an alias for the table column name!
User class definition:
package com.mybatis.test;public class User {private int id;private String userName;private int userAge;private String userAddress;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public int getUserAge() {return userAge;}public void setUserAge(int userAge) {this.userAge = userAge;}public String getUserAddress() {return userAddress;}public void setUserAddress(String userAddress) {this.userAddress = userAddress;}@Overridepublic String toString(){return this.userName+" "+this.userAge+" "+this.userAddress;}} IUserOperaton definition:
package com.mybatis.test;import java.util.List;public interface IUserOperation {public User selectUserByID(int id);public List<User> selectUsersByName(String userName);public void addUser(User user);public void updateUser(User user);public void deleteUser(int id);} IUserOperation corresponds to the operation interface, function name and operation id name in mybatis' xml configuration file.
Test class Test:
package com.mybatis.test;import java.io.Reader;import java.util.List;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;public class Test {private static SqlSessionFactory sqlSessionFactory;private static Reader reader;static {try {reader = Resources.getResourceAsReader("Configuration.xml");sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);} catch (Exception e) {e.printStackTrace();}}public static SqlSessionFactory getSession() {return sqlSessionFactory;}public void getUserByID(int userID) {SqlSession session = sqlSessionFactory.openSession();try {IUserOperation userOperation = session.getMapper(IUserOperation.class);User user = userOperation.selectUserByID(userID);if (user != null) {System.out.println(user.getId() + ":" + user.getUserName()+ ":" + user.getUserAddress());}} finally {session.close();}} public void getUserList(String userName) {SqlSession session = sqlSessionFactory.openSession();try {IUserOperation userOperation = session.getMapper(IUserOperation.class);List<User> users = userOperation.selectUsersByName(userName);for (User user : users) {System.out.println(user.getId() + ":" + user.getUserName()+ ":" + user.getUserAddress());}} finally {session.close();}}/*** After addition, commit*/public void addUser() {User user = new User();user.setUserAddress("place");user.setUserName("test_add");user.setUserAge(30);SqlSession session = sqlSessionFactory.openSession();try {IUserOperation userOperation = session.getMapper(IUserOperation.class);userOperation.addUser(user);session.commit();System.out.println("Add user ID:" + user.getId());} finally {session.close();}}/*** After modification, commit*/public void must be committed* updateUser() {SqlSession session = sqlSessionFactory.openSession();try {IUserOperation userOperation = session.getMapper(IUserOperation.class);User user = userOperation.selectUserByID(1);if (user != null) {user.setUserAddress("A new place");userOperation.updateUser(user);session.commit();}} finally {session.close();}}/*** After deletion, commit.* * @param id*/public void deleteUser(int id) {SqlSession session = sqlSessionFactory.openSession();try {IUserOperation userOperation = session.getMapper(IUserOperation.class);userOperation.deleteUser(id);session.commit();} finally {session.close();}}public static void main(String[] args) {try {Test test = new Test();// test.getUserByID(1);// test.getUserList("test1");// test.addUser();// test.updateUser();// test.deleteUser(6);} catch (Exception e) {System.out.println(e.getMessage());}}}The above is the example code of Mybatis implementation of addition, deletion, modification and query (CRUD) introduced to you by the editor. I hope it will be helpful to you. If you have any questions, please leave me a message and the editor will reply to you in time. Thank you very much for your support to Wulin.com website!