1. Official documents of mybatis
Mybatis – MyBatis 3 | getting startedhttps://mybatis.org/mybatis-3/zh/getting-started.html
2. Why do you need Mybatis
- Simplify the traditional JDBC code and realize automatic mapping
- Simple and easy to use
- Most companies use it
- advantage:
- Easy to learn: itself is small and simple. There is no third-party dependency. The simplest installation is as long as two jar files + several sql mapping files are configured. It is easy to learn and use. You can fully master its design idea and implementation through documents and source code.
- Flexibility: mybatis does not impose any impact on the existing design of the application or database. sql is written in xml for unified management and optimization. All requirements for operating the database can be met through sql statements.
- Decouple sql and program code: by providing DAO layer, separate business logic and data access logic, so as to make the system design clearer, easier to maintain and easier to unit test. The separation of sql and code improves maintainability.
- Provide mapping labels to support the mapping of orm fields between objects and databases
- Provide object relationship mapping labels to support object relationship construction and maintenance
- Provide xml tags to support writing dynamic sql.
3. The first Mybatis program
(1) 1. Build database
(2) . create project import dependency
Import mybatis and MySQL connector Java dependencies
Create a module on the project name (e.g. 20211011) and import dependencies in the automatically generated second pom file (you can also get them in the first pom file, but add < parent >)
<parent> <artifactId>20211011</artifactId> <groupId>org.example</groupId> <version>1.0-SNAPSHOT</version> </parent>
(3) . write the configuration file mybatis-config.xml under resources
<?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"> <!--Core profile--> <configuration> <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/yhzzuseUnicode=true&characterEncoding=utf-8"/> <property name="username" value="root"/> <property name="password" value="root"/> </dataSource> </environment> </environments> <mappers> <mapper resource="mapper/UserMapper.xml"/> </mappers> </configuration> <!--You can find it on the official website-->
(4) 1. Writing tool classes
package com.yhzz.util; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import java.io.IOException; import java.io.InputStream; public class MybatisUtils { private static SqlSessionFactory factory; static{ try { String resource = "mybatis-config.xml"; InputStream resourceAsStream =Resources.getResourceAsStream(resource); factory = new SqlSessionFactoryBuilder().build(resourceAsStream); } catch (IOException e) { e.printStackTrace(); } } //Get SqlSession object public static SqlSession getSqlSession(){ return factory.openSession(); } }
(5) . write entity classes and interfaces, "implementation classes", and test
① Create an entity class user under pojo
② UserMapper interface
package com.yhzz.dao; import com.yhzz.pojo.User; import java.util.List; public interface UserMapper { List<User> getUserList(); }
③ Mapper corresponding xml file (UserMapper.xml)
- Note that the file name and path must be the same as the Mapper path of the last configuration in our first XML configuration file: mybatis-config.xml.
<?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.yhzz.dao.UserMapper"> <select id="getUserList" resultType="com.yhzz.pojo.User"> select * from user; </select> </mapper>
④ Write the BaseDaoUtil class in util
⑤ Write a test class, create a test under the main file, right-click -- > mark directory as to turn green, and then create a UserMapperTest class
public class UserMapperTest { @Test public void queryUserList(){ //Get sqlsession object SqlSession sqlSession = BaseDaoUtil.openSqlSession(); //Get userMapper object UserMapper mapper = sqlSession.getMapper(UserMapper.class); //Call method to execute sql List<User> userList = mapper.queryUserList(); for (User user :userList){ System.out.println(user.getUsername()); } sqlSession.close(); } }
4. When Map is used as a parameter
//Modify user public void user(){ //Get sqlsession object SqlSession sqlSession = BaseDaoUtil.openSqlSession(); //Get userMapper object UserMapper mapper =sqlSession.getMapper(UserMapper.class); Map<String,Object> map = new HashMap();//New map object map.put("id",1); map.put("username","Ma Liu"); map.put("pwd","3");//Stored value User user = mapper.user(map); System.out.println(user.getUsername()); sqlSession.close();//close resource } //For addition, deletion and modification, the transaction sqlSession.commit() must be submitted manually;
sql statement in UserMapper.xml file
<!-- Query user--> <select id="user" parameterType="map" resultType="user"> select * from user where id = #{id} and username = #{username} and pwd = #{pwd} </select>
5. Fuzzy query
sql statement in UserMapper.xml file
<select id="queryLikeUser" resultType="user" parameterType="map"> select * from user where userName like "%"#{userName}"%"; </select>