当前位置:  首页>> 技术小册>> Mybatis合辑2-Mybatis映射文件

  • 示例:
  • 导入相关 jar 包的 Maven 坐标:
  1. <dependency>
  2. <groupId>org.mybatis</groupId>
  3. <artifactId>mybatis</artifactId>
  4. <version>3.5.5</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>log4j</groupId>
  8. <artifactId>log4j</artifactId>
  9. <version>1.2.17</version>
  10. </dependency>
  11. <dependency>
  12. <groupId>mysql</groupId>
  13. <artifactId>mysql-connector-java</artifactId>
  14. <version>8.0.21</version>
  15. </dependency>
  16. <dependency>
  17. <groupId>junit</groupId>
  18. <artifactId>junit</artifactId>
  19. <version>4.13</version>
  20. <scope>test</scope>
  21. </dependency>
  • db.properties
  1. jdbc.url=jdbc:mysql://192.168.134.100:3306/test?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true
  2. jdbc.driverClass=com.mysql.cj.jdbc.Driver
  3. jdbc.username=root
  4. jdbc.password=123456
  • log4j.xml
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
  3. <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
  4. <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
  5. <param name="Encoding" value="UTF-8" />
  6. <layout class="org.apache.log4j.PatternLayout">
  7. <param name="ConversionPattern" value="%-5p %d{MM-dd HH:mm:ss,SSS} %m (%F:%L) \n" />
  8. </layout>
  9. </appender>
  10. <logger name="java.sql">
  11. <level value="debug" />
  12. </logger>
  13. <logger name="org.apache.ibatis">
  14. <level value="info" />
  15. </logger>
  16. <root>
  17. <level value="debug" />
  18. <appender-ref ref="STDOUT" />
  19. </root>
  20. </log4j:configuration>
  • Employee.java
  1. package com.sunxiaping.domain;
  2. import org.apache.ibatis.type.Alias;
  3. @Alias("emp")
  4. public class Employee {
  5. private Integer id;
  6. private String lastName;
  7. private String email;
  8. private String gender;
  9. public Employee() {
  10. }
  11. public Employee(Integer id, String lastName, String email, String gender) {
  12. this.id = id;
  13. this.lastName = lastName;
  14. this.email = email;
  15. this.gender = gender;
  16. }
  17. public Integer getId() {
  18. return id;
  19. }
  20. public void setId(Integer id) {
  21. this.id = id;
  22. }
  23. public String getLastName() {
  24. return lastName;
  25. }
  26. public void setLastName(String lastName) {
  27. this.lastName = lastName;
  28. }
  29. public String getEmail() {
  30. return email;
  31. }
  32. public void setEmail(String email) {
  33. this.email = email;
  34. }
  35. public String getGender() {
  36. return gender;
  37. }
  38. public void setGender(String gender) {
  39. this.gender = gender;
  40. }
  41. @Override
  42. public String toString() {
  43. return "Employee{" +
  44. "id=" + id +
  45. ", lastName='" + lastName + '\'' +
  46. ", email='" + email + '\'' +
  47. ", gender='" + gender + '\'' +
  48. '}';
  49. }
  50. }
  • EmployeeMapper.java
  1. package com.sunxiaping.mapper;
  2. import com.sunxiaping.domain.Employee;
  3. public interface EmployeeMapper {
  4. /**
  5. * 根据id查询员工的信息
  6. *
  7. * @param id
  8. * @return
  9. */
  10. Employee findById(Integer id);
  11. /**
  12. * 增加员工信息
  13. *
  14. * @param employee
  15. */
  16. void addEmp(Employee employee);
  17. /**
  18. * 修改员工信息
  19. *
  20. * @param employee
  21. */
  22. void updateEmp(Employee employee);
  23. /**
  24. * 根据id删除员工信息
  25. *
  26. * @param id
  27. */
  28. void deleteEmpById(Integer id);
  29. }
  • EmployeeMapper.xml
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper
  3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5. <mapper namespace="com.sunxiaping.mapper.EmployeeMapper">
  6. <select id="findById" resultType="com.sunxiaping.domain.Employee">
  7. SELECT id,last_name as lastName,email,gender
  8. FROM employee
  9. WHERE id = #{id,jdbcType=INTEGER}
  10. </select>
  11. <insert id="addEmp">
  12. INSERT INTO employee (last_name,email,gender)
  13. VALUES (#{lastName,jdbcType=VARCHAR},#{email,jdbcType=VARCHAR},#{gender,jdbcType=VARCHAR})
  14. </insert>
  15. <update id="updateEmp">
  16. UPDATE employee
  17. SET last_name = #{lastName,jdbcType=VARCHAR},email = #{email,jdbcType=VARCHAR},gender=#{gender,jdbcType=VARCHAR}
  18. WHERE id = #{id,jdbcType=INTEGER}
  19. </update>
  20. <delete id="deleteEmpById">
  21. DELETE FROM employee
  22. WHERE id = #{id,jdbcType=INTEGER}
  23. </delete>
  24. </mapper>
  • mybatis-copnfig.xml
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE configuration
  3. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-config.dtd">
  5. <configuration>
  6. <properties resource="db.properties"></properties>
  7. <settings>
  8. <!-- 开启自动驼峰命名规则映射 -->
  9. <setting name="mapUnderscoreToCamelCase" value="true"/>
  10. </settings>
  11. <environments default="development">
  12. <environment id="development">
  13. <transactionManager type="JDBC"/>
  14. <dataSource type="POOLED">
  15. <!-- 使用${}引入db.properties属性文件中的内容 -->
  16. <property name="driver" value="${jdbc.driverClass}"/>
  17. <property name="url" value="${jdbc.url}"/>
  18. <property name="username" value="${jdbc.username}"/>
  19. <property name="password" value="${jdbc.password}"/>
  20. </dataSource>
  21. </environment>
  22. </environments>
  23. <mappers>
  24. <package name="com.sunxiaping.mapper"/>
  25. </mappers>
  26. </configuration>
  • 测试:
  1. package com.sunxiaping;
  2. import com.sunxiaping.domain.Employee;
  3. import com.sunxiaping.mapper.EmployeeMapper;
  4. import org.apache.ibatis.io.Resources;
  5. import org.apache.ibatis.session.SqlSession;
  6. import org.apache.ibatis.session.SqlSessionFactory;
  7. import org.apache.ibatis.session.SqlSessionFactoryBuilder;
  8. import org.junit.After;
  9. import org.junit.Before;
  10. import org.junit.Test;
  11. import java.io.IOException;
  12. import java.io.InputStream;
  13. public class EmployeeTest {
  14. SqlSessionFactory sqlSessionFactory = null;
  15. SqlSession sqlSession = null;
  16. EmployeeMapper employeeMapper = null;
  17. @Before
  18. public void before() throws IOException {
  19. String resource = "mybatis-config.xml";
  20. InputStream inputStream = Resources.getResourceAsStream(resource);
  21. sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
  22. sqlSession = sqlSessionFactory.openSession(true);
  23. employeeMapper = sqlSession.getMapper(EmployeeMapper.class);
  24. }
  25. @After
  26. public void after() {
  27. if (null != sqlSession) {
  28. sqlSession.close();
  29. }
  30. }
  31. @Test
  32. public void testFindById() {
  33. Employee employee = employeeMapper.findById(1);
  34. System.out.println("employee = " + employee);
  35. }
  36. @Test
  37. public void testAddEmp() {
  38. Employee employee = new Employee();
  39. employee.setEmail("jerry@qq.com");
  40. employee.setGender("男");
  41. employee.setLastName("jerry");
  42. employeeMapper.addEmp(employee);
  43. }
  44. @Test
  45. public void testUpdateEmp(){
  46. Employee employee = employeeMapper.findById(2);
  47. employee.setGender("女");
  48. employeeMapper.updateEmp(employee);
  49. }
  50. @Test
  51. public void testDeleteEmpById(){
  52. employeeMapper.deleteEmpById(2);
  53. }
  54. }