What is 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:
-- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;-- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 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 in the Src directory
<?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--> <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> <!--Search 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; } @Override public 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(); } } /** * Commit after addition */ 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(); } } /** * Commit */ public void 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(); } } /** * Commit after deletion. * * @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()); } }} Code download: MyBaitsSimpleDemo_jb51.rar
The above is all the content of this article. I hope it will be helpful to everyone's learning and I hope everyone will support Wulin.com more.