简介:  

  MyBatis的每一个查询映射的返回类型都是ResultMap,只是当我们提供的返回类型属性是resultType的时候,MyBatis对自动的给我们把对应的值赋给resultType所指定对象的属性,而当我们提供的返回类型是resultMap的时候,将数据库中列数据复制到对象的相应属性上,可以用于复制查询,两者不能同时用。

  resultMap 元素是 MyBatis 中最重要最强大的元素。它就是让你远离 90%的需要从结果 集中取出数据的 JDBC 代码的那个东西, 而且在一些情形下允许你做一些 JDBC 不支持的事 情。 事实上, 编写相似于对复杂语句联合映射这些等同的代码, 也许可以跨过上千行的代码。 ResultMap 的设计就是简单语句不需要明确的结果映射,而很多复杂语句确实需要描述它们 的关系。

首先来说一下resultType

  使用resultType进行输出映射,只有查询出来的列名和pojo(实体bean)中的属性名一致,该列才可以映射成功。

  简单来说也就是你的数据库字段和JavaBean里的字段名称必须一致才能映射成功。

  所以当我们JavaBean中的字段名和数据库字段名称有不同的时候,或者是多表查询的时候,一般会使用resultMap

resultMap

  resultMap是Mybatis最强大的元素,它可以将查询到的复杂数据(比如查询到几个表中数据)映射到一个结果集当中。

属性 描述
property 需要映射到JavaBean 的属性名称。
column 数据表的列名或者标签别名。
javaType 一个完整的类名,或者是一个类型别名。如果你匹配的是一个JavaBean,那MyBatis 通常会自行检测到。然后,如果你是要映射到一个HashMap,那你需要指定javaType 要达到的目的。
jdbcType 数据表支持的类型列表。这个属性只在insert,update 或delete 的时候针对允许空的列有用。JDBC 需要这项,但MyBatis 不需要。如果你是直接针对JDBC 编码,且有允许空的列,而你要指定这项。
typeHandler 使用这个属性可以覆写类型处理器。这项值可以是一个完整的类名,也可以是一个类型别名。

元素简介:

  1. <!--column不做限制,可以为任意表的字段,而property须为type 定义的pojo属性-->
  2. <resultMap id="唯一的标识" type="映射的pojo对象">
  3. <id column="表的主键字段,或者可以为查询语句中的别名字段" jdbcType="字段类型" property="映射pojo对象的主键属性" />
  4. <result column="表的一个字段(可以为任意表的一个字段)" jdbcType="字段类型" property="映射到pojo对象的一个属性(须为type定义的pojo对象中的一个属性)"/>
  5. <association property="pojo的一个对象属性" javaType="pojo关联的pojo对象">
  6. <id column="关联pojo对象对应表的主键字段" jdbcType="字段类型" property="关联pojo对象的主席属性"/>
  7. <result column="任意表的字段" jdbcType="字段类型" property="关联pojo对象的属性"/>
  8. </association>
  9. <!-- 集合中的property须为oftype定义的pojo对象的属性-->
  10. <collection property="pojo的集合属性" ofType="集合中的pojo对象">
  11. <id column="集合中pojo对象对应的表的主键字段" jdbcType="字段类型" property="集合中pojo对象的主键属性" />
  12. <result column="可以为任意表的字段" jdbcType="字段类型" property="集合中的pojo对象的属性" />
  13. </collection>
  14. </resultMap>

使用具体案例来讲述:

首先我们数据库中的表结构如下:

可以看出我们表字段中有很多字段内有下划线,而我们的JavaBean里面的命名是按照驼峰规则命名的,下面我们贴上JavaBean:

  1. package com.zy.domain;
  2.  
  3. import java.util.Date;
  4.  
  5. public class User {
  6.  
  7. private Long id;
  8.  
  9. // 用户名
  10. private String userName;
  11.  
  12. // 密码
  13. private String password;
  14.  
  15. // 姓名
  16. private String name;
  17.  
  18. // 年龄
  19. private Integer age;
  20.  
  21. // 性别,1男性,2女性
  22. private Integer sex;
  23.  
  24. // 出生日期
  25. private Date birthday;
  26.  
  27. // 创建时间
  28. private Date created;
  29.  
  30. // 更新时间
  31. private Date updated;
  32.  
  33. public Long getId() {
  34. return id;
  35. }
  36.  
  37. public void setId(Long id) {
  38. this.id = id;
  39. }
  40.  
  41. public String getuserName() {
  42. return userName;
  43. }
  44.  
  45. public void setuserName(String userName) {
  46. this.userName = userName;
  47. }
  48.  
  49. public String getPassword() {
  50. return password;
  51. }
  52.  
  53. public void setPassword(String password) {
  54. this.password = password;
  55. }
  56.  
  57. public String getName() {
  58. return name;
  59. }
  60.  
  61. public void setName(String name) {
  62. this.name = name;
  63. }
  64.  
  65. public Integer getAge() {
  66. return age;
  67. }
  68.  
  69. public void setAge(Integer age) {
  70. this.age = age;
  71. }
  72.  
  73. public Integer getSex() {
  74. return sex;
  75. }
  76.  
  77. public void setSex(Integer sex) {
  78. this.sex = sex;
  79. }
  80.  
  81. public Date getBirthday() {
  82. return birthday;
  83. }
  84.  
  85. public void setBirthday(Date birthday) {
  86. this.birthday = birthday;
  87. }
  88.  
  89. public Date getCreated() {
  90. return created;
  91. }
  92.  
  93. public void setCreated(Date created) {
  94. this.created = created;
  95. }
  96.  
  97. public Date getUpdated() {
  98. return updated;
  99. }
  100.  
  101. public void setUpdated(Date updated) {
  102. this.updated = updated;
  103. }
  104.  
  105. @Override
  106. public String toString() {
  107. return "User [id=" + id + ", userName=" + userName + ", password=" + password + ", name=" + name
  108. + ", age=" + age + ", sex=" + sex + ", birthday=" + birthday + ", created=" + created
  109. + ", updated=" + updated + "]";
  110. }
  111.  
  112. }

User JavaBean

  1. package com.zy.domain;
  2.  
  3. import java.util.List;
  4.  
  5. /**
  6. * 订单表
  7. *
  8. */
  9. public class Order {
  10.  
  11. private Integer oid;
  12.  
  13. private Long userId;
  14.  
  15. private String orderNumber;
  16.  
  17. private User user;
  18.  
  19. private List<Orderitem> orderitemList;
  20.  
  21. public List<Orderitem> getOrderitemList() {
  22. return orderitemList;
  23. }
  24.  
  25. public void setOrderitemList(List<Orderitem> orderitemList) {
  26. this.orderitemList = orderitemList;
  27. }
  28.  
  29. public User getUser() {
  30. return user;
  31. }
  32.  
  33. public void setUser(User user) {
  34. this.user = user;
  35. }
  36.  
  37. public Integer getOid() {
  38. return oid;
  39. }
  40.  
  41. public void setOid(Integer oid) {
  42. this.oid = oid;
  43. }
  44.  
  45. public Long getUserId() {
  46. return userId;
  47. }
  48.  
  49. public void setUserId(Long userId) {
  50. this.userId = userId;
  51. }
  52.  
  53. public String getOrderNumber() {
  54. return orderNumber;
  55. }
  56.  
  57. public void setOrderNumber(String orderNumber) {
  58. this.orderNumber = orderNumber;
  59. }
  60.  
  61. @Override
  62. public String toString() {
  63. return "Order [oid=" + oid + ", userId=" + userId + ", orderNumber=" + orderNumber + ", user=" + user
  64. + ", orderitemList=" + orderitemList + "]";
  65. }
  66.  
  67. }

Order JavaBean

  1. package com.zy.domain;
  2.  
  3. /**
  4. * 商品表
  5. */
  6. public class Product {
  7.  
  8. private Integer pid;
  9.  
  10. private String pname;
  11.  
  12. private Float price;
  13.  
  14. private String description;
  15.  
  16. public Integer getPid() {
  17. return pid;
  18. }
  19.  
  20. public void setPid(Integer pid) {
  21. this.pid = pid;
  22. }
  23.  
  24. public String getPname() {
  25. return pname;
  26. }
  27.  
  28. public void setPname(String pname) {
  29. this.pname = pname;
  30. }
  31.  
  32. public Float getPrice() {
  33. return price;
  34. }
  35.  
  36. public void setPrice(Float price) {
  37. this.price = price;
  38. }
  39.  
  40. public String getDescription() {
  41. return description;
  42. }
  43.  
  44. public void setDescription(String description) {
  45. this.description = description;
  46. }
  47.  
  48. @Override
  49. public String toString() {
  50. return "Product [pid=" + pid + ", pname=" + pname + ", price=" + price + ", description=" + description + "]";
  51. }
  52.  
  53. }

Product JavaBean

  1. package com.zy.domain;
  2.  
  3. public class Orderitem {
  4.  
  5. private Integer itemId;
  6. private int orderId;
  7. private int productId;
  8.  
  9. private Double totalPrice;
  10.  
  11. private Integer status;
  12.  
  13. private Product product;
  14.  
  15. public Double getTotalPrice() {
  16. return totalPrice;
  17. }
  18.  
  19. public void setTotalPrice(Double totalPrice) {
  20. this.totalPrice = totalPrice;
  21. }
  22.  
  23. public Integer getStatus() {
  24. return status;
  25. }
  26.  
  27. public void setStatus(Integer status) {
  28. this.status = status;
  29. }
  30.  
  31. public Product getProduct() {
  32. return product;
  33. }
  34.  
  35. public void setProduct(Product product) {
  36. this.product = product;
  37. }
  38.  
  39. public Integer getItemId() {
  40. return itemId;
  41. }
  42.  
  43. public void setItemId(Integer itemId) {
  44. this.itemId = itemId;
  45. }
  46.  
  47. public int getOrderId() {
  48. return orderId;
  49. }
  50.  
  51. public void setOrderId(int orderId) {
  52. this.orderId = orderId;
  53. }
  54.  
  55. public int getProductId() {
  56. return productId;
  57. }
  58.  
  59. public void setProductId(int productId) {
  60. this.productId = productId;
  61. }
  62.  
  63. @Override
  64. public String toString() {
  65. return "Orderitem{" +
  66. "itemId=" + itemId +
  67. ", orderId=" + orderId +
  68. ", productId=" + productId +
  69. ", totalPrice=" + totalPrice +
  70. ", status=" + status +
  71. ", product=" + product +
  72. '}';
  73. }
  74. }

Orderitem JavaBean

首先我们把配置文件中的驼峰规则关闭

  1. <settings>
  2. <setting name="mapUnderscoreToCamelCase" value="false"/>
  3. </settings>

单表查询(查询所有订单信息):

OrderMapper.xml

  1. <mapper namespace="com.zy.mapper.OrderMapper">
  2. <resultMap id="OrderResultMap" type="com.zy.domain.Order">
  3. <id column="oid" property="oid"></id>
  4. <result column="user_id" property="userId"></result>
  5. <result column="order_number" property="orderNumber"></result>
  6. </resultMap>
  7. <!--查询订单表信息-->
  8. <select id="getOrderList" resultMap="OrderResultMap">
  9. select * from tb_order
  10. </select>
  11. </mapper>

OrderMapper接口

  1. public interface OrderMapper {
  2. public List<Order> getOrderList();
  3. }

测试:

  1. public class OrderMapperTest {
  2. OrderMapper mapper;
  3.  
  4. @org.junit.Before
  5. public void setUp() throws Exception {
  6. InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
  7. SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
  8. SqlSession sqlSession = sqlSessionFactory.openSession(true);
  9. mapper = sqlSession.getMapper(OrderMapper.class);
  10. }
  11.  
  12. @org.junit.Test
  13. public void getOrderList() throws Exception {
  14. List<Order> list = mapper.getOrderList();
  15. for (Order order : list) {
  16. System.out.println(order);
  17. }
  18. }
  19.  
  20. }

运行结果:

一对一多表查询(根据订单编号查询订单信息并带出订单所属用户信息):

这里引出了association联合:

  联合元素用来处理“一对一”的关系。需要指定映射的Java实体类的属性,属性的javaType(通常MyBatis 自己会识别)。

OrderMapper.xml

  1. <mapper namespace="com.zy.mapper.OrderMapper">
  2. <resultMap id="OrderResultMap" type="com.zy.domain.Order">
  3. <id column="oid" property="oid"></id>
  4. <result column="user_id" property="userId"></result>
  5. <result column="order_number" property="orderNumber"></result>
  6. </resultMap>
  7. <!--查询订单表信息-->
  8. <select id="getOrderList" resultMap="OrderResultMap">
  9. select * from tb_order
  10. </select>
  11.  
  12. <!--extends 表示继承 autoMapping表示自动映射JavaBean中字段和数据表字段一致的字段信息-->
  13. <resultMap id="OrderWithUserResultMap" type="com.zy.domain.Order" extends="OrderResultMap">
  14. <!--由于继承了OrderResultMap 所以这里就不用再写order表的信息了-->
  15. <!--用户表信息-->
  16. <association property="user" javaType="com.zy.domain.User" autoMapping="true">
  17. <id column="user_id" property="id"></id>
  18. <result column="user_name" property="userName"></result>
  19. </association>
  20. </resultMap>
  21. <!--根据订单编号查询订单信息并带出订单所属用户信息-->
  22. <select id="getOrderWithUser" resultMap="OrderWithUserResultMap">
  23. select * from tb_order as o left join tb_user as u on o.user_id=u.id
  24. where o.order_number=#{ordernumber}
  25. </select>
  26. </mapper>

OrderMapper接口:

  1. public interface OrderMapper {
  2. /**
  3. * 获取所有订单列表
  4. */
  5. public List<Order> getOrderList();
  6.  
  7. /**
  8. * 根据订单编号 获取单个订单及所属用户信息
  9. */
  10. public Order getOrderWithUser(@Param("ordernumber") String orderNumber);
  11. }

测试:

  1. public class OrderMapperTest {
  2. OrderMapper mapper;
  3.  
  4. @Before
  5. public void setUp() throws Exception {
  6. InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
  7. SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
  8. SqlSession sqlSession = sqlSessionFactory.openSession(true);
  9. mapper = sqlSession.getMapper(OrderMapper.class);
  10. }
  11.  
  12. @Test
  13. public void getOrderList() throws Exception {
  14. List<Order> list = mapper.getOrderList();
  15. for (Order order : list) {
  16. System.out.println(order);
  17. }
  18. }
  19.  
  20. @Test
  21. public void getOrderWithUser() throws Exception {
  22. Order order = mapper.getOrderWithUser("20140921002");
  23. System.out.println(order);
  24. }
  25.  
  26. }

一对多多表查询(根据订单号 查询订单,并且查询出所有订单详情(子订单)及所属用户):

由于是一对多,所以这里就引出了collection聚集:

  聚集元素用来处理“一对多”的关系。需要指定映射的Java实体类的属性,属性的javaType(一般为ArrayList);列表中对象的类型ofType(Java实体类)。

OrderMapper.xml

  1. <mapper namespace="com.zy.mapper.OrderMapper">
  2. <resultMap id="OrderResultMap" type="com.zy.domain.Order">
  3. <id column="oid" property="oid"></id>
  4. <result column="user_id" property="userId"></result>
  5. <result column="order_number" property="orderNumber"></result>
  6. </resultMap>
  7. <!--查询订单表信息-->
  8. <select id="getOrderList" resultMap="OrderResultMap">
  9. select * from tb_order
  10. </select>
  11.  
  12. <!--extends 表示继承-->
  13. <resultMap id="OrderWithUserResultMap" type="com.zy.domain.Order" extends="OrderResultMap">
  14. <!--由于继承了OrderResultMap 所以这里就不用再写order表的信息了-->
  15. <!--用户表信息-->
  16. <association property="user" javaType="com.zy.domain.User" autoMapping="true">
  17. <id column="user_id" property="id"></id>
  18. <result column="user_name" property="userName"></result>
  19. </association>
  20. </resultMap>
  21. <!--根据订单编号查询订单信息并带出订单所属用户信息-->
  22. <select id="getOrderWithUser" resultMap="OrderWithUserResultMap">
  23. select * from tb_order as o left join tb_user as u on o.user_id=u.id
  24. where o.order_number=#{ordernumber}
  25. </select>
  26.  
  27. <resultMap id="OrderWithItemAndUserResultMap" type="com.zy.domain.Order"
  28. extends="OrderWithUserResultMap">
  29. <!--javaType为list list代表List类型 ofType为Orderitem-->
  30. <collection property="orderitemList" javaType="list" ofType="com.zy.domain.Orderitem"
  31. autoMapping="true">
  32. <id column="item_id" property="itemId"></id>
  33. <result column="order_id" property="orderId"></result>
  34. <result column="product_id" property="productId"></result>
  35. <result column="total_price" property="totalPrice"></result>
  36. </collection>
  37. </resultMap>
  38. <!--根据订单号 查询订单,并且查询出所有订单详情(子订单)及所属用户-->
  39. <select id="getOrderWithItenAndUser" resultMap="OrderWithItemAndUserResultMap">
  40. select * from tb_order o
  41. left join tb_user u on o.user_id=u.id
  42. left join tb_orderitem oi on o.oid=oi.order_id
  43. where o.order_number=#{ordernumber}
  44. </select>
  45. </mapper>

OrderMapper接口:

  1. public interface OrderMapper {
  2. /**
  3. * 获取所有订单列表
  4. */
  5. public List<Order> getOrderList();
  6.  
  7. /**
  8. * 根据订单编号 获取单个订单及所属用户信息
  9. */
  10. public Order getOrderWithUser(@Param("ordernumber") String orderNumber);
  11.  
  12. /**
  13. * 根据订单号 查询订单,并且查询出所有订单详情(子订单)及所属用户
  14. */
  15. public Order getOrderWithItenAndUser(@Param("ordernumber") String orderNumber);
  16. }

测试:

  1. public class OrderMapperTest {
  2. OrderMapper mapper;
  3.  
  4. @Before
  5. public void setUp() throws Exception {
  6. InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
  7. SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
  8. SqlSession sqlSession = sqlSessionFactory.openSession(true);
  9. mapper = sqlSession.getMapper(OrderMapper.class);
  10. }
  11.  
  12. @Test
  13. public void getOrderList() throws Exception {
  14. List<Order> list = mapper.getOrderList();
  15. for (Order order : list) {
  16. System.out.println(order);
  17. }
  18. }
  19.  
  20. @Test
  21. public void getOrderWithUser() throws Exception {
  22. Order order = mapper.getOrderWithUser("20140921002");
  23. System.out.println(order);
  24. }
  25.  
  26. @Test
  27. public void getOrderWithItenAndUser() throws Exception {
  28. Order order = mapper.getOrderWithItenAndUser("20140921001");
  29. System.out.println(order);
  30. }
  31.  
  32. }

多对多 多表查询(根据订单号 查询订单,查询出所属用户,并且查询出订单的详情,及订单详情中的对应的商品信息   订单详情和商品为多对多关系):

这一次我们开启驼峰规则,可以少写一些符合规则的字段:

  1. <settings>
  2. <setting name="mapUnderscoreToCamelCase" value="true"/>
  3. </settings>

OrderMapper.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.  
  6. <mapper namespace="com.zy.mapper.OrderMapper">
  7. <resultMap id="OrderFullInfoResultMap" type="com.zy.domain.Order" autoMapping="true">
  8. <!--order表主键-->
  9. <id column="oid" property="oid"></id>
  10. <!--关联用户表-->
  11. <association property="user" javaType="com.zy.domain.User" autoMapping="true">
  12. <!--用户表主键-->
  13. <id column="user_id" property="id"></id>
  14. </association>
  15. <!--关联订单详情表-->
  16. <collection property="orderitemList" javaType="list" ofType="com.zy.domain.Orderitem"
  17. autoMapping="true">
  18. <!--订单详情表主键-->
  19. <id column="item_id" property="itemId"></id>
  20. <!--关联商品-->
  21. <association property="product" javaType="com.zy.domain.Product" autoMapping="true">
  22. <!--商品表主键-->
  23. <id column="product_id" property="pid"></id>
  24. </association>
  25. </collection>
  26. </resultMap>
  27.  
  28. <!--根据订单号 查询订单,查询出所属用户,并且查询出订单的详情,及订单详情中的对应的商品信息-->
  29. <select id="getOrderFullInfo" resultMap="OrderFullInfoResultMap">
  30. select * from tb_order o
  31. left join tb_user u on o.user_id=u.id
  32. left join tb_orderitem oi on o.oid=oi.order_id
  33. left join tb_product p on oi.product_id=p.pid
  34. where o.order_number=#{ordernumber}
  35. </select>
  36. </mapper>

OrderMapper接口:

  1. public interface OrderMapper {
  2.  
  3. /**
  4. * 根据订单号 查询订单,查询出所属用户,并且查询出订单的详情,及订单详情中的对应的商品信息
  5. */
  6. public Order getOrderFullInfo(@Param("ordernumber") String orderNumber);
  7. }

测试:

  1. public class OrderMapperTest {
  2. OrderMapper mapper;
  3.  
  4. @Before
  5. public void setUp() throws Exception {
  6. InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
  7. SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
  8. SqlSession sqlSession = sqlSessionFactory.openSession(true);
  9. mapper = sqlSession.getMapper(OrderMapper.class);
  10. }
  11.  
  12. @Test
  13. public void getOrderFullInfo() throws Exception{
  14. Order order = mapper.getOrderFullInfo("20140921001");
  15. System.out.println(order);
  16. }
  17.  
  18. }

最终测试结果:

MyBatis总结六:resultMap详解(包含多表查询)的更多相关文章

  1. 【转】resultMap详解(包含多表查询)

    简介: MyBatis的每一个查询映射的返回类型都是ResultMap,只是当我们提供的返回类型属性是resultType的时候,MyBatis对自动的给我们把对应的值赋给resultType所指定对 ...

  2. 学数据库还不会Select,SQL Select详解,单表查询完全解析?

    查询操作是SQL语言中很重要的操作,我们今天就来详细的学习一下. 一.数据查询的语句格式 SELECT [ALL|DISTINCT] <目标列表达式>[,<目标列表达式> .. ...

  3. Mybatis系列全解(四):全网最全!Mybatis配置文件XML全貌详解

    封面:洛小汐 作者:潘潘 做大事和做小事的难度是一样的.两者都会消耗你的时间和精力,所以如果决心做事,就要做大事,要确保你的梦想值得追求,未来的收获可以配得上你的努力. 前言 上一篇文章 <My ...

  4. Mybatis SQL映射文件详解

    Mybatis SQL映射文件详解 mybatis除了有全局配置文件,还有映射文件,在映射文件中可以编写以下的顶级元素标签: cache – 该命名空间的缓存配置. cache-ref – 引用其它命 ...

  5. MyBatis的动态SQL详解

    MyBatis的动态SQL是基于OGNL表达式的,它可以帮助我们方便的在SQL语句中实现某些逻辑,本文详解mybatis的动态sql,需要的朋友可以参考下 MyBatis 的一个强大的特性之一通常是它 ...

  6. 转载 Spring、Spring MVC、MyBatis整合文件配置详解

    Spring.Spring MVC.MyBatis整合文件配置详解   使用SSM框架做了几个小项目了,感觉还不错是时候总结一下了.先总结一下SSM整合的文件配置.其实具体的用法最好还是看官方文档. ...

  7. ResultMap详解

    MyBatis:ResultMap详解   一.前言   MyBatis是基于“数据库结构不可控”的思想建立的,也就是我们希望数据库遵循第三范式或BCNF,但实际事与愿违,那么结果集映射就是MyBat ...

  8. MyBatis中@MapKey使用详解

    MyBatis中@MapKey使用详解我们在上一篇文章中讲到在Select返回类型中是返回Map时,是对方法中是否存在注解@MapKey,这个注解我也是第一次看到,当时我也以为是纯粹的返回单个数据对象 ...

  9. idea spring+springmvc+mybatis环境配置整合详解

    idea spring+springmvc+mybatis环境配置整合详解 1.配置整合前所需准备的环境: 1.1:jdk1.8 1.2:idea2017.1.5 1.3:Maven 3.5.2 2. ...

随机推荐

  1. 有关linux下redis overcommit_memory的问题,有需要的朋友可以参考下。

    我在安装redis-4.0.6后,启动时出现一些问题,如下: :M Jan ::! Background save may fail under low memory condition. To fi ...

  2. JS 正则验证 test()

    / 用途:检查输入手机号码是否正确 输入: s:字符串 返回: 如果通过验证返回true,否则返回false     / function checkMobile(s){ var regu =/^[1 ...

  3. 机器学习(四)—逻辑回归LR

    逻辑回归常见问题:https://www.cnblogs.com/ModifyRong/p/7739955.html 推导在笔记上,现在摘取部分要点如下: (0) LR回归是在线性回归模型的基础上,使 ...

  4. iTerm2 + Oh My Zsh

    iTerm2 http://iterm2.com/downloads.html https://iterm2.com/downloads/stable/iTerm2-2_1_4.zip Oh My Z ...

  5. mysql查询哪张表数据最大

    转载:https://blog.csdn.net/qq13650793239/article/details/81142134 mysql数据库中information_schema 数据库存储了数据 ...

  6. redhat linux 中设置网卡固定ip

    更改 /etc/sysconfig/network-scripts/ifcfg-eth0(第一个网卡为eth0) DEVICE=eth0#网卡设备名称 ONBOOT=yes#启动时是否激活 yes | ...

  7. spring学习-4

    bean的作用域 使用bean的scope属性来配置bean的作用域 scope="singleton":默认是单例模式即容器初始化创建bean实例,在整个容器的生命周期内只创建这 ...

  8. OpenCV-Python在图片上输出中文

    OpenCV中在图片上输出中文一般需要借助FreeType库实现.FreeType库是一个完全免费(开源)的.高质量的且可移植的字体引擎,它提供统一的接口来访问多种字体格式文件.但使用FreeType ...

  9. sed----Linux下文本处理五大神器之一

    转自:http://www.cnblogs.com/dong008259/archive/2011/12/07/2279897.html sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行 ...

  10. Python 2.7_多进程获取简书专题数据(一)

    学python几个月了正好练练手,发现问题不断提高,先从专题入手,爬取些数据,一开始对简书网站结构不熟悉,抓取推荐,热门,城市3个导航栏,交流发现推荐和热门是排序不同,url会重复,以及每个专题详情页 ...