I would just check for the Head.
ClearAll[myIntegrate]
myIntegrate[expr_Times, var_Symbol] := Map[Integrate[#, var] &, Expand[expr]]
myIntegrate[expr_Plus, var_Symbol] := Map[Integrate[#, var] &, expr]
myIntegrate[expr_, var_Symbol] := Integrate[expr, var]
And now call myIntegrate instead of Integrate and Mathematica will figure which wrapper to call on its own.
For example
myIntegrate[x, x]
myIntegrate[3*(1 + x), x]
myIntegrate[x^2, x]
gives

In the above, Expand is used for Head times, to take care of cases such as a*(b+c) and if it is already + then no need to expand. For all other cases, normal Integrate is called. This should take care of all cases you want to map integrate over terms I hope.
